void () { try { ChangeContextUtil.encodeContextInfo(myDestinationClass, true); final boolean rebindNeeded2 = !myVariableName.equals(myFieldName) || myRebindNeeded; final PsiReference[] refs; if (rebindNeeded2) { refs = ReferencesSearch.search(myLocal, GlobalSearchScope.projectScope(myProject), false).toArray(PsiReference.EMPTY_ARRAY); } else { refs = null; } final PsiMethod enclosingConstructor = BaseExpressionToFieldHandler.getEnclosingConstructor(myDestinationClass, myLocal); myField = mySettings.isIntroduceEnumConstant() ? EnumConstantsUtil.createEnumConstant(myDestinationClass, myLocal, myFieldName) : createField(myLocal, mySettings.getForcedType(), myFieldName, myInitializerPlace == IN_FIELD_DECLARATION); BaseExpressionToFieldHandler.setModifiers(myField, mySettings); if (!mySettings.isIntroduceEnumConstant()) { VisibilityUtil.fixVisibility(myOccurences, myField, mySettings.getFieldVisibility()); } PsiElement finalAnchorElement = myLocal; while (finalAnchorElement != null && finalAnchorElement.getParent() != myDestinationClass) { finalAnchorElement = finalAnchorElement.getParent(); } PsiMember anchorMember = finalAnchorElement instanceof PsiMember ? (PsiMember)finalAnchorElement : null; //required to check anchors as rearranger allows any configuration myField = BaseExpressionToFieldHandler.ConvertToFieldRunnable .appendField(myLocal.getInitializer(), myInitializerPlace, myDestinationClass, myDestinationClass, myField, anchorMember); myLocal.normalizeDeclaration(); PsiElement declarationStatement = myLocal.getParent(); final BaseExpressionToFieldHandler.InitializationPlace finalInitializerPlace; if (myLocal.getInitializer() == null) { finalInitializerPlace = IN_FIELD_DECLARATION; } else { finalInitializerPlace = myInitializerPlace; } final PsiElementFactory factory = JavaPsiFacade.getElementFactory(myProject); switch (finalInitializerPlace) { case IN_FIELD_DECLARATION -> { appendComments(declarationStatement, myField, myLocal.getInitializer()); declarationStatement.delete(); } case IN_CURRENT_METHOD -> { PsiExpressionStatement statement = createAssignment(myLocal, myFieldName, factory); appendComments(declarationStatement, declarationStatement, myLocal.getInitializer()); if (declarationStatement instanceof PsiDeclarationStatement) { declarationStatement.replace(statement); } else { myLocal.replace(statement.getExpression()); } } case IN_CONSTRUCTOR -> addInitializationToConstructors(myLocal, myField, enclosingConstructor, factory); case IN_SETUP_METHOD -> addInitializationToSetUp(myLocal, myField, factory); } if (enclosingConstructor != null && myInitializerPlace == IN_CONSTRUCTOR) { PsiStatement statement = createAssignment(myLocal, myFieldName, factory); declarationStatement.replace(statement); } if (rebindNeeded2) { for (final PsiReference reference : refs) { if (reference != null) { //expr = RefactoringUtil.outermostParenthesizedExpression(expr); RefactoringUtil.replaceOccurenceWithFieldRef((PsiExpression)reference, myField, myDestinationClass); //replaceOccurenceWithFieldRef((PsiExpression)reference, field, aaClass); } } //RefactoringUtil.renameVariableReferences(local, pPrefix + fieldName, GlobalSearchScope.projectScope(myProject)); ChangeContextUtil.decodeContextInfo(myDestinationClass, myDestinationClass, null); } } catch (IncorrectOperationException e) { LOG.error(e); } }