@Override
  protected @Nullable LocalQuickFix buildFix(Object... infos) {
    PsiReferenceExpression expression = (PsiReferenceExpression)infos[1];
    PsiExpression qualifierExpression = expression.getQualifierExpression();
    if (qualifierExpression == null) {
      return null;
    }
    PsiType qualifierType = qualifierExpression.getType();
    PsiElement parent = expression.getParent();
    if (!(parent instanceof PsiMethodCallExpression callExpression)) {
      return null;
    }
    if (!BaseEqualsVisitor.OBJECT_EQUALS.matches(callExpression)) {
      return null;
    }
    PsiExpression[] arguments = callExpression.getArgumentList().getExpressions();
    if (arguments.length != 1) {
      return null;
    }
    PsiExpression argument = arguments[0];
    if (argument == null) {
      return null;
    }
    PsiType argumentType = argument.getType();
    if (argumentType == null || !argumentType.equals(qualifierType)) {
      return null;
    }
    PsiClass psiClass = PsiUtil.resolveClassInClassTypeOnly(argumentType);
    if (psiClass == null) {
      return null;
    }
    String qualifiedName = psiClass.getQualifiedName();
    if (qualifiedName == null) {
      return null;
    }
    ReplaceInfo info = myClasses.get(qualifiedName);
    if (info == null || info instanceof ReplaceInfo.NotAvailableReplaceInfo) {
      return null;
    }

    return new EqualsOnSuspiciousObjectFix(info);
  }
@Override
  protected @Nullable LocalQuickFix buildFix(Object... infos)