IntroduceVariableSettings (Project project, Editor editor, PsiExpression expr, PsiExpression[] occurrences, final TypeSelectorManagerImpl typeSelectorManager, boolean declareFinalIfAll, boolean anyAssignmentLHS, final InputValidator validator, PsiElement anchor, final JavaReplaceChoice replaceChoice) { final boolean replaceAll = replaceChoice.isAll(); final SuggestedNameInfo suggestedName = CommonJavaRefactoringUtil.getSuggestedName(typeSelectorManager.getDefaultType(), expr, anchor); final String variableName = suggestedName.names.length > 0 ? suggestedName.names[0] : "v"; final boolean declareFinal = replaceAll && declareFinalIfAll || !anyAssignmentLHS && createFinals(anchor.getContainingFile()) || anchor instanceof PsiSwitchLabelStatementBase; final boolean declareVarType = canBeExtractedWithoutExplicitType(expr) && createVarType() && !replaceChoice.isChain(); final boolean replaceWrite = anyAssignmentLHS && replaceAll; return new IntroduceVariableSettings() { @Override public @NlsSafe String getEnteredName() { return variableName; } @Override public boolean isReplaceAllOccurrences() { return replaceAll; } @Override public boolean isDeclareFinal() { return declareFinal; } @Override public boolean isDeclareVarType() { return declareVarType; } @Override public boolean isReplaceLValues() { return replaceWrite; } @Override public PsiType getSelectedType() { final PsiType selectedType = typeSelectorManager.getTypeSelector().getSelectedType(); return selectedType != null ? selectedType : typeSelectorManager.getDefaultType(); } @Override public JavaReplaceChoice getReplaceChoice() { return replaceChoice; } @Override public boolean isOK() { return true; } }; }