void (@NotNull PsiBinaryExpression expression) { super.visitBinaryExpression(expression); if (!ComparisonUtils.isEqualityComparison(expression)) { return; } final PsiExpression rhs = expression.getROperand(); if (!isObjectType(rhs)) { return; } final PsiExpression lhs = expression.getLOperand(); if (!isObjectType(lhs)) { return; } final PsiMethod method = PsiTreeUtil.getParentOfType(expression, PsiMethod.class); if (MethodUtils.isEquals(method) && (isThisReference(lhs, method.getContainingClass()) || isThisReference(rhs, method.getContainingClass()))) { return; } if (m_ignoreEnums && (TypeConversionUtil.isEnumType(lhs.getType()) || TypeConversionUtil.isEnumType(rhs.getType()))) { return; } ProblemHighlightType highlightType; if (shouldHighlight(expression, rhs, lhs)) { highlightType = ProblemHighlightType.GENERIC_ERROR_OR_WARNING; } else { if (!isOnTheFly()) { return; } highlightType = ProblemHighlightType.INFORMATION; } registerError(expression.getOperationSign(), highlightType, expression); }