docs: public static Class[] resolveSuperTypeGenericArguments(Class<?> type, Class<?> superTypeToResolve) {
          Type supertype = type.getGenericSuperclass();
          Class<?> superclass = type.getSuperclass();
          while (superclass != null && superclass != Object.class) {
              if (supertype instanceof ParameterizedType) {
                  ParameterizedType pt = (ParameterizedType) supertype;
                  if (pt.getRawType() == superTypeToResolve) {
                      return resolveTypeArguments(supertype);
                  }
              }
  
              supertype = superclass.getGenericSuperclass();
              superclass = superclass.getSuperclass();
          }
          return ReflectionUtils.EMPTY_CLASS_ARRAY;
      }