docs: private Type resolveType(Type beanType, Type beanType2, Type type) {
          if (type instanceof ParameterizedType) {
              if (beanType instanceof ParameterizedType) {
                  return resolveParameterizedType((ParameterizedType) beanType, (ParameterizedType) type);
              }
              if (beanType instanceof Class<?>) {
                  return resolveType(((Class<?>) beanType).getGenericSuperclass(), beanType2, type);
              }
          }
  
          if (type instanceof TypeVariable<?>) {
              if (beanType instanceof ParameterizedType) {
                  return resolveTypeParameter((ParameterizedType) beanType, beanType2, (TypeVariable<?>) type);
              }
              if (beanType instanceof Class<?>) {
                  return resolveType(((Class<?>) beanType).getGenericSuperclass(), beanType2, type);
              }
          }
          return type;
      }