private static String @NotNull [] getSuggestionsByValue(@NotNull String stringValue) {
    List<String> result = new ArrayList<>();
    StringBuilder currentWord = new StringBuilder();

    boolean prevIsUpperCase = false;

    for (int i = 0; i < stringValue.length(); i++) {
      final char c = stringValue.charAt(i);
      if (Character.isUpperCase(c)) {
        if (!currentWord.isEmpty() && !prevIsUpperCase) {
          result.add(currentWord.toString());
          currentWord = new StringBuilder();
        }
        currentWord.append(c);
      }
      else if (Character.isLowerCase(c)) {
        currentWord.append(Character.toUpperCase(c));
      }
      else if (Character.isJavaIdentifierPart(c) && c != '_') {
        if (Character.isJavaIdentifierStart(c) || !currentWord.isEmpty() || !result.isEmpty()) {
          currentWord.append(c);
        }
      }
      else {
        if (!currentWord.isEmpty()) {
          result.add(currentWord.toString());
          currentWord = new StringBuilder();
        }
      }

      prevIsUpperCase = Character.isUpperCase(c);
    }

    if (!currentWord.isEmpty()) {
      result.add(currentWord.toString());
    }
    return ArrayUtilRt.toStringArray(result);
  }
private static String @NotNull [] getSuggestionsByValue(@NotNull String stringValue)