@NotNull
  static NameSuggestionsGenerator createNameSuggestionGenerator(final PsiExpression expr,
                                                                final String propName,
                                                                final Project project,
                                                                final String enteredName) {
    return type -> {
      final JavaCodeStyleManager codeStyleManager = JavaCodeStyleManager.getInstance(project);
      SuggestedNameInfo info = codeStyleManager.suggestVariableName(VariableKind.PARAMETER, propName, expr != null && expr.isValid() ? expr : null, type);
      if (expr != null && expr.isValid()) {
        info = codeStyleManager.suggestUniqueVariableName(info, expr, true);
      }
      final String[] strings = JavaNameSuggestionUtil.appendUnresolvedExprName(JavaCompletionUtil
        .completeVariableNameForRefactoring(codeStyleManager, type, VariableKind.LOCAL_VARIABLE, info), expr);
      return new SuggestedNameInfo.Delegate(enteredName != null ? ArrayUtil.mergeArrays(new String[]{enteredName}, strings): strings, info);
    };
  }
@NotNull
  static NameSuggestionsGenerator createNameSuggestionGenerator(final PsiExpression expr,
                                                                final String propName,
                                                                final Project project,
                                                                final String enteredName)