void (@NotNull PsiBinaryExpression expression) { super.visitBinaryExpression(expression); if (myLanguageLevel.isAtLeast(LanguageLevel.JDK_1_7) && !myLanguageLevel.isAtLeast(LanguageLevel.JDK_1_8)) { PsiType ltype = expression.getLOperand().getType(); PsiExpression rOperand = expression.getROperand(); if (rOperand != null) { PsiType rtype = rOperand.getType(); if (ltype != null && rtype != null && (ltype.equalsToText(CommonClassNames.JAVA_LANG_OBJECT) ^ rtype.equalsToText(CommonClassNames.JAVA_LANG_OBJECT)) && (TypeConversionUtil.isPrimitiveAndNotNull(ltype) ^ TypeConversionUtil.isPrimitiveAndNotNull(rtype)) && TypeConversionUtil.isBinaryOperatorApplicable(expression.getOperationTokenType(), ltype, rtype, false) && TypeConversionUtil.areTypesConvertible(rtype, ltype)) { myHolder.registerProblem(expression.getOperationSign(), JavaAnalysisBundle .message("comparision.between.object.and.primitive"), ProblemHighlightType.GENERIC_ERROR_OR_WARNING); } } } }