text: public List<CharsRef> stem(char word[], int length) {if (dictionary.needsInputCleaning) {scratchSegment.setLength(0);scratchSegment.append(word, 0, length);CharSequence cleaned = dictionary.cleanInput(scratchSegment, segment);scratchBuffer = ArrayUtil.grow(scratchBuffer, cleaned.length());length = segment.length();segment.getChars(0, length, scratchBuffer, 0);word = scratchBuffer;}int caseType = caseOf(word, length);if (caseType == UPPER_CASE) {caseFoldTitle(word, length);caseFoldLower(titleBuffer, length);List<CharsRef> list = doStem(word, length, false);list.addAll(doStem(titleBuffer, length, true));list.addAll(doStem(lowerBuffer, length, true));return list;} else if (caseType == TITLE_CASE) {caseFoldLower(word, length);List<CharsRef> list = doStem(word, length, false);list.addAll(doStem(lowerBuffer, length, true));return list;} else {return doStem(word, length, false);}}