boolean (@NotNull final PsiExpression initializer) { final Set<PsiField> fields = new HashSet<>(); final Ref<Boolean> refsLocal = new Ref<>(false); initializer.accept(new JavaRecursiveElementWalkingVisitor() { @Override public void visitReferenceExpression(@NotNull PsiReferenceExpression expression) { super.visitReferenceExpression(expression); if (expression.getQualifierExpression() == null) { final PsiElement resolve = expression.resolve(); if (resolve == null || resolve instanceof PsiVariable && !PsiTreeUtil.isAncestor(initializer, resolve, true)) { if (resolve instanceof PsiField) { if (!((PsiField)resolve).hasInitializer()) { fields.add((PsiField)resolve); } } else { refsLocal.set(true); stopWalking(); } } } } }); final boolean locals = refsLocal.get(); boolean superOrThis = IntroduceFieldHandler.isInSuperOrThis(initializer); if (!locals && fields.isEmpty() && !superOrThis) { return true; } return updateInitializationPlaceModel(!locals && initializedInSetUp(fields), !locals && !superOrThis && initializedInConstructor(fields), locals || !fields.isEmpty()); }