int (int startAt, int patternIndex, boolean allowSpecialChars, boolean wordStartsOnly, @NotNull ErrorState errorState) { int next = wordStartsOnly ? indexOfWordStart(patternIndex, startAt, errorState) : indexOfIgnoreCase(startAt + 1, patternIndex, errorState); // pattern humps are allowed to match in words separated by " ()", lowercase characters aren't if (!allowSpecialChars && !myHasSeparators && !myHasHumps && Strings.containsAnyChar(myName, myHardSeparators, startAt, next)) { return -1; } // if the user has typed a dot, don't skip other dots between humps // but one pattern dot may match several name dots if (!allowSpecialChars && myHasDots && !isPatternChar(patternIndex - 1, '.', errorState) && Strings.contains(myName, startAt, next, '.')) { return -1; } return next; }