@Override
  public void visitClass(@NotNull PsiClass aClass) {
    if (aClass.isInterface() || aClass.isAnnotationType() || aClass.isEnum()) {
      return;
    }
    if (aClass instanceof PsiTypeParameter) {
      return;
    }
    if (inspection.ignoreAnonymousInnerClasses && aClass instanceof PsiAnonymousClass) {
      return;
    }
    final PsiClass containingClass = PsiTreeUtil.getParentOfType(aClass, PsiClass.class);
    if (containingClass == null) {
      return;
    }
    if (aClass.hasModifierProperty(PsiModifier.STATIC)) {
      return;
    }
    final PsiModifierListOwner staticElement = PsiUtil.getEnclosingStaticElement(aClass, containingClass);
    if (staticElement != null) {
      return;
    }
    if (!SerializationUtils.isSerializable(aClass)) {
      return;
    }
    if (SerializationUtils.isSerializable(containingClass)) {
      return;
    }
    if (inspection.isIgnoredSubclass(aClass)) {
      return;
    }
    registerClassError(aClass);
  }
@Override
  public void visitClass(@NotNull PsiClass aClass)