IntSet (@NotNull CharSequence text) { final AddonlyIntSet set = new AddonlyIntSet(); int index = 0; final char[] fileTextArray = CharArrayUtil.fromSequenceWithoutCopying(text); ScanWordsLoop: while (true) { while (true) { if (index == text.length()) break ScanWordsLoop; final char c = fileTextArray != null ? fileTextArray[index]:text.charAt(index); if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || Character.isJavaIdentifierPart(c)) { break; } index++; } int identifierStart = index; while (true) { index++; if (index == text.length()) break; final char c = fileTextArray != null ? fileTextArray[index]:text.charAt(index); if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) continue; if (!Character.isJavaIdentifierPart(c)) break; } int tc1 = 0; int tc2 = 0; int tc3; for (int i = identifierStart, iters = 0; i < index; ++i, ++iters) { char c = StringUtil.toLowerCase(fileTextArray != null ? fileTextArray[i]:text.charAt(i)); tc3 = (tc2 << 8) + c; tc2 = (tc1 << 8) + c; tc1 = c; if (iters >= 2) { set.add(tc3); } } } return set; }