private void icEndings() {
    if (endsIn('i', 'c')) {
      word.setLength(j + 3);
      word.append("al"); /* try converting -ic to -ical */
      k = j + 4;
      if (lookup()) return;
      
      word.setCharAt(j + 1, 'y'); /* try converting -ic to -y */
      word.setLength(j + 2);
      k = j + 1;
      if (lookup()) return;
      
      word.setCharAt(j + 1, 'e'); /* try converting -ic to -e */
      if (lookup()) return;
      
      word.setLength(j + 1); /* try removing -ic altogether */
      k = j;
      if (lookup()) return;
      word.append("ic"); /* restore the original ending */
      k = j + 2;
      // nolookup()
    }
    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