GroovyIntroduceVariableSettings (@NotNull final GrIntroduceContext context, @NotNull final OccurrencesChooser.ReplaceChoice choice, final String[] names) { return new GroovyIntroduceVariableSettings() { private final CanonicalTypes.Type myType; { GrExpression expression = context.getExpression(); StringPartInfo stringPart = context.getStringPart(); GrVariable var = context.getVar(); PsiType type = expression != null ? expression.getType() : var != null ? var.getType() : stringPart != null ? stringPart.getLiteral().getType() : null; myType = type != null && !PsiTypes.nullType().equals(type) ? CanonicalTypes.createTypeWrapper(type) : null; } @Override public boolean isDeclareFinal() { return myCanBeFinalCb != null ? myCanBeFinalCb.isSelected() : false; } @Nullable @Override public String getName() { return names[0]; } @Override public boolean replaceAllOccurrences() { return choice == OccurrencesChooser.ReplaceChoice.ALL; } @Nullable @Override public PsiType getSelectedType() { return myType != null ? myType.getType(context.getPlace()) : null; } }; }