@Contract(value = "null -> false", pure = true)
  private static boolean isValueBasedClass(PsiType type) {
    final PsiClass classType = PsiTypesUtil.getPsiClass(type);
    if (classType == null) return false;

    if (classType.hasAnnotation(ANNOTATION_NAME)) return true;

    return ContainerUtil.or(type.getSuperTypes(), superType -> isValueBasedClass(superType));
  }
@Contract(value = "null -> false", pure = true)
  private static boolean isValueBasedClass(PsiType type)