GrIntroduceFieldSettings (@NotNull final GrIntroduceContext context, @NotNull final OccurrencesChooser.ReplaceChoice choice, final String[] names) { return new GrIntroduceFieldSettings() { @Override public boolean declareFinal() { return false; } @Override public Init initializeIn() { return Init.FIELD_DECLARATION; } @Override public String getVisibilityModifier() { return PsiModifier.PRIVATE; } @Override public boolean isStatic() { boolean hasInstanceInScope = true; PsiClass clazz = (PsiClass)context.getScope(); if (replaceAllOccurrences()) { for (PsiElement occurrence : context.getOccurrences()) { if (!PsiUtil.hasEnclosingInstanceInScope(clazz, occurrence, false)) { hasInstanceInScope = false; break; } } } else if (context.getExpression() != null) { hasInstanceInScope = PsiUtil.hasEnclosingInstanceInScope(clazz, context.getExpression(), false); } else if (context.getStringPart() != null) { hasInstanceInScope = PsiUtil.hasEnclosingInstanceInScope(clazz, context.getStringPart().getLiteral(), false); } return !hasInstanceInScope; } @Override public boolean removeLocalVar() { return myLocalVar != null; } @Nullable @Override public String getName() { return names[0]; } @Override public boolean replaceAllOccurrences() { return context.getVar() != null || choice == OccurrencesChooser.ReplaceChoice.ALL; } @Nullable @Override public PsiType getSelectedType() { GrExpression expression = context.getExpression(); GrVariable var = context.getVar(); StringPartInfo stringPart = context.getStringPart(); return var != null ? var.getDeclaredType() : expression != null ? expression.getType() : stringPart != null ? stringPart.getLiteral().getType() : null; } }; }