@Override
    public void visitConditionalExpression(@NotNull PsiConditionalExpression expression) {
      super.visitConditionalExpression(expression);
      final PsiExpression thenExpression = expression.getThenExpression();
      if (thenExpression == null) {
        return;
      }
      final PsiExpression elseExpression = expression.getElseExpression();
      final EquivalenceChecker.Match match =
        EquivalenceChecker.getCanonicalPsiEquivalence().expressionsMatch(thenExpression, elseExpression);
      if (match.isExactMismatch() || match.isExactMatch()) {
        return;
      }
      final PsiElement leftDiff = match.getLeftDiff();
      if (!(leftDiff instanceof PsiExpression) || leftDiff.getParent() instanceof PsiStatement) {
        return;
      }
      final PsiType type = ((PsiExpression)leftDiff).getType();
      if (type == null || PsiTypes.voidType().equals(type)) {
        return;
      }
      if (ignoreSingleArgument && isOnlyArgumentOfMethodCall(leftDiff, expression)) {
        if (!isOnTheFly()) return;
        registerError(expression, ProblemHighlightType.INFORMATION);
      }
      else {
        registerError(expression, ProblemHighlightType.GENERIC_ERROR_OR_WARNING);
      }
    }
@Override
    public void visitConditionalExpression(@NotNull PsiConditionalExpression expression)