@Override
    public void visitClass(@NotNull PsiClass aClass) {
      if (aClass.isInterface() || aClass.isEnum() || aClass.isAnnotationType() || aClass.isRecord() || aClass instanceof PsiTypeParameter) {
        return;
      }
      if (aClass.hasModifierProperty(PsiModifier.ABSTRACT)) {
        return;
      }
      if (!isExternalizable(aClass)) {
        return;
      }
      final PsiMethod[] constructors = aClass.getConstructors();
      final PsiMethod constructor = getNoArgConstructor(constructors);
      if (constructor == null) {
        if (aClass.hasModifierProperty(PsiModifier.PUBLIC) && constructors.length == 0) {
          return;
        }
      } else {
        if (constructor.hasModifierProperty(PsiModifier.PUBLIC)) {
          return;
        }
      }
      if (SerializationUtils.hasWriteReplace(aClass)) {
        return;
      }
      registerClassError(aClass, aClass, constructor);
    }
@Override
    public void visitClass(@NotNull PsiClass aClass)