docs: private static boolean isAssignableFrom(TypeVariable<?> type1, TypeVariable<?> type2) {
          if (type1.equals(type2)) {
              return true;
          }
          // if a type variable extends another type variable, it cannot declare other bounds
          if (type2.getBounds()[0] instanceof TypeVariable<?>) {
              return isAssignableFrom(type1, (TypeVariable<?>) type2.getBounds()[0]);
          }
          return false;
      }