boolean (@Nullable PsiElement element, @Nullable final Set<String> visibleLocalVariables) { if (element == null) { return false; } final Ref<Boolean> rv = new Ref<>(Boolean.FALSE); element.accept(new JavaRecursiveElementWalkingVisitor() { @Override public void visitPostfixExpression(final @NotNull PsiPostfixExpression expression) { rv.set(Boolean.TRUE); } @Override public void visitReferenceExpression(final @NotNull PsiReferenceExpression expression) { final PsiElement psiElement = expression.resolve(); if (psiElement instanceof PsiLocalVariable) { if (visibleLocalVariables != null) { if (!visibleLocalVariables.contains(((PsiLocalVariable)psiElement).getName())) { rv.set(Boolean.TRUE); } } } else if (psiElement instanceof PsiMethod) { rv.set(Boolean.TRUE); //final PsiMethod method = (PsiMethod)psiElement; //if (!isSimpleGetter(method)) { // rv.set(Boolean.TRUE); //} } if (!rv.get().booleanValue()) { super.visitReferenceExpression(expression); } } @Override public void visitPrefixExpression(final @NotNull PsiPrefixExpression expression) { final IElementType op = expression.getOperationTokenType(); if (JavaTokenType.PLUSPLUS.equals(op) || JavaTokenType.MINUSMINUS.equals(op)) { rv.set(Boolean.TRUE); } else { super.visitPrefixExpression(expression); } } @Override public void visitAssignmentExpression(final @NotNull PsiAssignmentExpression expression) { rv.set(Boolean.TRUE); } @Override public void visitCallExpression(final @NotNull PsiCallExpression callExpression) { rv.set(Boolean.TRUE); //final PsiMethod method = callExpression.resolveMethod(); //if (method == null || !isSimpleGetter(method)) { // rv.set(Boolean.TRUE); //} //else { // super.visitCallExpression(callExpression); //} } }); return rv.get().booleanValue(); }