void (final UsageInfo @NotNull [] usages) { try { if (isCreateInnerClass()) { PsiClass containingClass = Objects.requireNonNull(getMethod().getContainingClass()); myInnerClass = (PsiClass)addInnerClass(containingClass, myElementFactory.createClass(getInnerClassName())); final boolean isStatic = copyMethodModifiers() && notHasGeneratedFields(); for (UsageInfo usage : usages) { final PsiMethodCallExpression methodCallExpression = PsiTreeUtil.getParentOfType(usage.getElement(), PsiMethodCallExpression.class); if (methodCallExpression != null) { replaceMethodCallExpression(inferTypeArguments(methodCallExpression), methodCallExpression); } } if (myExtractProcessor.generatesConditionalExit()) { myResultFieldName = uniqueFieldName(new String[]{"myResult"}); myInnerClass.add(myElementFactory.createField(myResultFieldName, PsiTypes.booleanType())); myInnerClass.add(myElementFactory.createMethodFromText("boolean is(){return " + myResultFieldName + ";}", myInnerClass)); } final PsiParameter[] parameters = getMethod().getParameterList().getParameters(); if (parameters.length > 0) { createInnerClassConstructor(parameters); } else if (isStatic) { final PsiMethod copy = (PsiMethod)getMethod().copy(); copy.setName("invoke"); myInnerClass.add(copy); if (myMultipleExitPoints) { addOutputVariableFieldsWithGetters(); } return; } if (myMultipleExitPoints) { addOutputVariableFieldsWithGetters(); } myCopyMethodToInner = () -> { copyMethodWithoutParameters(); copyMethodTypeParameters(); }; } else { for (UsageInfo usage : usages) { final PsiMethodCallExpression methodCallExpression = PsiTreeUtil.getParentOfType(usage.getElement(), PsiMethodCallExpression.class); if (methodCallExpression != null) { methodCallExpression.replace(processMethodDeclaration( methodCallExpression.getArgumentList())); } } } } catch (IncorrectOperationException e) { LOG.error(e); } }