private void nceEndings() {
    int old_k = k;
    char word_char;
    
    if (endsIn('n', 'c', 'e')) {
      word_char = word.charAt(j);
      if (!((word_char == 'e') || (word_char == 'a'))) return;
      word.setLength(j);
      word.unsafeWrite('e'); /* try converting -e/ance to -e (adherance/adhere) */
      k = j;
      if (lookup()) return;
      word.setLength(j); /*
                          * try removing -e/ance altogether
                          * (disappearance/disappear)
                          */
      k = j - 1;
      if (lookup()) return;
      word.unsafeWrite(word_char); /* restore the original ending */
      word.append("nce");
      k = old_k;
      // nolookup() because we restored the original ending
    }
    return;
  }
*
YCS: this was the one place where lookup was not followed by return.
So restructure it. if ((j>0)&&(lookup(word.toString())) &&
!((word.charAt(j) == 's') && (word.charAt(j-1) == 's'))) return;
***
linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemmer.java