void (Editor editor, int startOffset, TokenProcessor processor) { CharSequence chars = editor.getDocument().getCharsSequence(); HighlighterIterator iterator = editor.getHighlighter().createIterator(startOffset); while (!iterator.atEnd()) { int start = iterator.getStart(); int end = iterator.getEnd(); while (start < end) { int wordStart = start; while (wordStart < end && !isWordPart(chars.charAt(wordStart))) wordStart++; int wordEnd = wordStart; while (wordEnd < end && isWordPart(chars.charAt(wordEnd))) wordEnd++; if (wordEnd > wordStart && containsLettersOrDigits(chars, wordStart, wordEnd) && !processor.processToken(wordStart, wordEnd)) { return; } start = wordEnd + 1; } iterator.advance(); } }