@Override
    public void visitMethodCallExpression(@NotNull PsiMethodCallExpression expression) {
      final String methodName = expression.getMethodExpression().getReferenceName();
      if (!HardcodedMethodConstants.EQUALS.equals(methodName)) {
        return;
      }
      final PsiExpression qualifierExpression = getQualifierExpression(expression);
      if (qualifierExpression instanceof PsiQualifiedExpression) {
        return;
      }
      if (isNotNullExpressionOrConstant(qualifierExpression)) {
        return;
      }
      final PsiElement parentExpression =
        PsiTreeUtil.skipParentsOfType(expression, PsiParenthesizedExpression.class, PsiPrefixExpression.class);
      if (parentExpression instanceof PsiBinaryExpression) {
        if (processNotNullCheck((PsiBinaryExpression)parentExpression)) {
          return;
        }
      }
      else if (parentExpression instanceof PsiConditionalExpression) {
        if (processNotNullCondition((PsiConditionalExpression)parentExpression)) {
          return;
        }
      }
      if (qualifierExpression == null) {
        return;
      }
      final PsiExpression argumentExpression = getArgumentExpression(expression);
      if (argumentExpression == null) {
        return;
      }
      if (isOnTheFly()) {
        registerError(expression, ProblemHighlightType.INFORMATION, qualifierExpression.getText(), argumentExpression.getText(), true);
      }
    }
@Override
    public void visitMethodCallExpression(@NotNull PsiMethodCallExpression expression)