private int findNextPatternCharOccurrence(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;
    }
private int findNextPatternCharOccurrence(int startAt,
                                              int patternIndex,
                                              boolean allowSpecialChars,
                                              boolean wordStartsOnly,
                                              @NotNull ErrorState errorState)