void (@NotNull PsiMethodCallExpression call) { super.visitMethodCallExpression(call); final PsiClass containingClass = ClassUtils.getContainingClass(call); if (containingClass == null) { return; } final PsiMethod method = call.resolveMethod(); if (method == null) { return; } if (!containingClass.equals(method.getContainingClass())) { return; } final PsiReferenceExpression methodExpression = call.getMethodExpression(); final PsiExpression qualifier = methodExpression.getQualifierExpression(); if (qualifier != null && !(qualifier instanceof PsiThisExpression)) { if (ignoreSetterCallsOnOtherObjects) { return; } final PsiClass qualifierClass = PsiUtil.resolveClassInClassTypeOnly(qualifier.getType()); if (!containingClass.equals(qualifierClass)) { return; } } if (!PropertyUtil.isSimpleSetter(method)) { return; } if (onlyReportPrivateSetter && !method.hasModifierProperty(PsiModifier.PRIVATE)) { return; } final Query<PsiMethod> query = OverridingMethodsSearch.search(method); final PsiMethod overridingMethod = query.findFirst(); if (overridingMethod != null) { return; } registerMethodCallError(call); }