public ResolvableType as(Class<?> typE) {
        if (this == NONE) {
            return NONE;
        }
        Class<?> resolveD = resolve();
        if (resolveD == null || resolveD == typE) {
            return this;
        }
        for (ResolvableType interfaceType : getInterfaces()) {
            ResolvableType interfaceAsType = interfaceType.as(typE);
            if (interfaceAsType != NONE) {
                return interfaceAsType;
            }
        }
        return getSuperType().as(typE);
    }
Return this type as a {link ResolvableType} of the specified class. Searches
{link #getSuperType() supertype} and {link #getInterfaces() interface}
hierarchies to find a match, returning {link #NONE} if this type does not
implement or extend the specified class.

@param typE the required type (typically narrowed)
@return a {link ResolvableType} representing this object as the specified
type, or {link #NONE} if not resolvable as that type
see #asCollection()
see #asMap()
see #getSuperType()
see #getInterfaces()
analyzer/src/main/java/nl/basjes/parse/useragent/utils/springframework/core/ResolvableType.java