private boolean isFirstCharMatching(int nameIndex, int patternIndex, @NotNull ErrorState errorState) {
      if (nameIndex >= myName.length()) return false;

      boolean ignoreCase = myOptions != NameUtil.MatchingCaseSensitivity.ALL;
      if (!charEquals(patternIndex, nameIndex, ignoreCase, true, errorState)) return false;

      char patternChar = charAt(patternIndex, errorState);

      if (myOptions == NameUtil.MatchingCaseSensitivity.FIRST_LETTER &&
          (patternIndex == 0 || patternIndex == 1 && isWildcard(0)) &&
          hasCase(patternChar) &&
          Character.isUpperCase(patternChar) != Character.isUpperCase(myName.charAt(0))) {
        return false;
      }
      return true;
    }
private boolean isFirstCharMatching(int nameIndex, int patternIndex, @NotNull ErrorState errorState)