public static @NotNull TypeConstraint exactSubtype(@NotNull PsiElement id, @NotNull List<ClassDef> superClasses) {
    Exact[] supers = ContainerUtil.map2Array(superClasses, Exact.class, cls -> exactClass(cls));
    if (ContainerUtil.or(supers, Exact::isFinal)) return BOTTOM;
    if (supers.length == 0) {
      supers = new Exact[]{EXACTLY_OBJECT};
    }
    return new ExactSubclass(id, supers);
  }
public static @NotNull TypeConstraint exactSubtype(@NotNull PsiElement id, @NotNull List<ClassDef> superClasses)