void (PsiExpression newExpr) { assert myAnchor.isValid(); PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(myProject); PsiExpression ref = elementFactory.createExpressionFromText(mySettings.getEnteredName(), null); boolean needReplaceSelf = myReplaceSelf; if (mySettings.isReplaceAllOccurrences()) { for (PsiExpression occurrence : myOccurrences) { PsiExpression correctedOccurrence = occurrence.equals(myExpression) ? newExpr : occurrence; correctedOccurrence = CommonJavaRefactoringUtil.outermostParenthesizedExpression(correctedOccurrence); if (mySettings.isReplaceLValues() || !RefactoringUtil.isAssignmentLHS(correctedOccurrence)) { PsiElement replacement = IntroduceVariableUtil.replace(correctedOccurrence, ref, myProject); if (!myAnchor.isValid()) { myAnchor = replacement; } } } needReplaceSelf &= newExpr instanceof PsiPolyadicExpression && newExpr.isValid() && !newExpr.isPhysical(); } if (needReplaceSelf) { PsiElement replacement = IntroduceVariableUtil.replace(newExpr, ref, myProject); if (!myAnchor.isValid()) { myAnchor = replacement; } } }