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;
    }
Resolve this type by a single level, returning the resolved value or {link #NONE}.
<p>Note: The returned {link ResolvableType} should only be used as an intermediary
as it cannot be serialized.
analyzer/src/main/java/nl/basjes/parse/useragent/utils/springframework/core/ResolvableType.java