@Override
    public void visitBinaryExpression(
      @NotNull PsiBinaryExpression expression) {
      super.visitBinaryExpression(expression);
      final PsiExpression rhs = expression.getROperand();
      if (!ComparisonUtils.isEqualityComparison(expression)) {
        return;
      }
      final PsiType expressionType = expression.getType();
      if (expressionType == null) {
        return;
      }
      final PsiExpression strippedRhs =
        PsiUtil.skipParenthesizedExprDown(rhs);
      if (strippedRhs == null) {
        return;
      }
      final PsiExpression lhs = expression.getLOperand();
      final PsiExpression strippedLhs =
        PsiUtil.skipParenthesizedExprDown(lhs);
      if (strippedLhs == null) {
        return;
      }
      if (isConstantMask(strippedLhs) &&
          PsiUtil.isConstantExpression(strippedRhs)) {
        if (isIncompatibleMask((PsiBinaryExpression)strippedLhs,
                               strippedRhs)) {
          registerError(expression, expression);
        }
      }
      else if (isConstantMask(strippedRhs) &&
               PsiUtil.isConstantExpression(strippedLhs)) {
        if (isIncompatibleMask((PsiBinaryExpression)strippedRhs,
                               strippedLhs)) {
          registerError(expression, expression);
        }
      }
    }
@Override
    public void visitBinaryExpression(
      @NotNull PsiBinaryExpression expression)