@Override
  protected final @NotNull PsiElementVisitor buildInternalVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
    return UastHintedVisitorAdapter.create(holder.getFile().getLanguage(), new AbstractUastNonRecursiveVisitor() {

      @Override
      public boolean visitBinaryExpression(@NotNull UBinaryExpression binaryExpression) {
        UastBinaryOperator operator = binaryExpression.getOperator();
        if (isIdentityComparison(operator) && isNotExcluded(binaryExpression)) {
          PsiElement sourcePsi = binaryExpression.getSourcePsi();
          if (sourcePsi == null) return true;
          String operatorText = getOperatorText(binaryExpression);
          holder.registerProblem(sourcePsi,
                                 DevKitBundle.message("inspections.use.equals.description", getTargetClass().getSimpleName()),
                                 createFix(operatorText, operator == UastBinaryOperator.IDENTITY_NOT_EQUALS, sourcePsi.getLanguage())
          );
        }
        return true;
      }
    }, HINTS);
  }
@Override
  protected final @NotNull PsiElementVisitor buildInternalVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly)