boolean (@NotNull ExtractMethodProcessor originalProcessor, @NotNull Map<PsiExpression, String> predefinedNames) { Map<PsiExpression, PsiExpression> expressionsMapping = new HashMap<>(); Map<PsiVariable, PsiVariable> variablesMapping = new HashMap<>(); collectCopyMapping(originalProcessor.myElements, myElements, myUsagesList, expressionsMapping, variablesMapping); Map<PsiLocalVariable, ClusterOfUsages> parameterDeclarations = createParameterDeclarations(originalProcessor, expressionsMapping, predefinedNames); putMatchParameters(parameterDeclarations); JavaDuplicatesExtractMethodProcessor parametrizedProcessor = new JavaDuplicatesExtractMethodProcessor(myElements, ExtractMethodHandler.getRefactoringName()); if (!parametrizedProcessor.prepare(false)) { return false; } parametrizedProcessor.applyFrom(originalProcessor, variablesMapping); parametrizedProcessor.doExtract(); myParametrizedMethod = parametrizedProcessor.getExtractedMethod(); myParametrizedCall = parametrizedProcessor.getMethodCall(); myVariableDatum = unmapVariableData(parametrizedProcessor.myVariableDatum, variablesMapping); replaceArguments(parameterDeclarations, myParametrizedCall); return true; }