docs: public ResolvableType resolveType() {
          if (this.type instanceof ParameterizedType) {
              return forType(((ParameterizedType) this.type).getRawType(), this.variableResolver);
          }
          if (this.type instanceof WildcardType) {
              Type resolved = resolveBounds(((WildcardType) this.type).getUpperBounds());
              if (resolved == null) {
                  resolved = resolveBounds(((WildcardType) this.type).getLowerBounds());
              }
              return forType(resolved, this.variableResolver);
          }
          if (this.type instanceof TypeVariable) {
              TypeVariable<?> variable = (TypeVariable<?>) this.type;
              // Try default variable resolution
              if (this.variableResolver != null) {
                  ResolvableType resolved = this.variableResolver.resolveVariable(variable);
                  if (resolved != null) {
                      return resolved;
                  }
              }
              // Fallback to bounds
              return forType(resolveBounds(variable.getBounds()), this.variableResolver);
          }
          return NONE;
      }