@Override
  public ChangeSignatureRefactoring createChangeSignatureProcessor(PsiMethod method,
                                                                   boolean generateDelegate,
                                                                   @Nullable String newVisibility,
                                                                   String newName,
                                                                   PsiType newReturnType,
                                                                   ParameterInfo @NotNull [] parameterInfo,
                                                                   ThrownExceptionInfo[] thrownExceptions,
                                                                   Set<PsiMethod> propagateParametersMethods,
                                                                   Set<PsiMethod> propagateExceptionsMethods,
                                                                   Consumer<? super List<ParameterInfo>> callback) {
    JavaChangeInfo changeInfo = JavaChangeInfoImpl.generateChangeInfo(method, generateDelegate, true, newVisibility,
                                                                      newName, newReturnType != null ? CanonicalTypes.createTypeWrapper(newReturnType) : null,
                                                                      (ParameterInfoImpl[])parameterInfo,
                                                                      thrownExceptions, propagateParametersMethods, propagateExceptionsMethods);
    return new ChangeSignatureRefactoringImpl(new ChangeSignatureProcessor(myProject, changeInfo) {
      @Override
      protected void performRefactoring(UsageInfo @NotNull [] usages) {
        CommandProcessor.getInstance().setCurrentCommandName(getCommandName());
        super.performRefactoring(usages);
        if (callback  != null) {
          callback.consume(Arrays.asList(parameterInfo));
        }
      }
    });
  }
@Override
  public ChangeSignatureRefactoring createChangeSignatureProcessor(PsiMethod method,
                                                                   boolean generateDelegate,
                                                                   @Nullable String newVisibility,
                                                                   String newName,
                                                                   PsiType newReturnType,
                                                                   ParameterInfo @NotNull [] parameterInfo,
                                                                   ThrownExceptionInfo[] thrownExceptions,
                                                                   Set<PsiMethod> propagateParametersMethods,
                                                                   Set<PsiMethod> propagateExceptionsMethods,
                                                                   Consumer<? super List<ParameterInfo>> callback)