static LS phraseCache_group(PhraseCache cache, LS tok) { if (cache == null) ret tok; tok = cloneList(tok); for (int i = 1; i < l(tok); i += 2) { L phrases = cache.byFirstWord.get(tok.get(i)); new Best best; for (LS phrase : phrases) if (codeTokenSubListEqualsIC_skipFirst(tok, phrase, i)) best.put(phrase, l(phrase)); if (best.has()) { int j = i+l(best!)-3; tok_addCurlyBracketsAroundPart(tok, i, j); i = j; } } ret tok; } static LS phraseCache_group(PhraseCache cache, S s) { ret phraseCache_group(cache, javaTokNPunctuation(s)); }