@Override
    public void visitClass(@NotNull PsiClass aClass) {
      if (aClass.isInterface() ||
          aClass.isAnnotationType() ||
          aClass.isRecord() ||
          aClass instanceof PsiTypeParameter ||
          !SerializationUtils.isSerializable(aClass) ||
          isIgnoredSubclass(aClass)) {
        return;
      }
      if (ignoreAnonymousInnerClasses && aClass instanceof PsiAnonymousClass) {
        return;
      }
      if (!hasSerializableState(aClass)) {
        // doesn't matter, class has no state anyway.
        return;
      }
      final boolean serializable = !hasWriteObjectMethodWhichAlwaysThrowsException(aClass);
      final boolean deserializable = !hasReadObjectMethodWhichAlwaysThrowsException(aClass);
      if (!serializable && !deserializable) {
        return;
      }
      registerClassError(aClass, Boolean.valueOf(serializable), Boolean.valueOf(deserializable), aClass);
    }
@Override
    public void visitClass(@NotNull PsiClass aClass)