@Override
  public @NotNull StreamEx<TypeConstraints.@NotNull ClassDef> superTypes() {
    Set<PsiClass> superTypes = new LinkedHashSet<>();
    InheritanceUtil.processSupers(myClass, false, t -> {
      if (!(t instanceof PsiTypeParameter) && !t.hasModifierProperty(PsiModifier.FINAL)) {
        superTypes.add(t);
      }
      return true;
    });
    return StreamEx.of(superTypes).map(JavaClassDef::new);
  }
@Override
  public @NotNull StreamEx<TypeConstraints.@NotNull ClassDef> superTypes()