code: public ResolvableType as(Class<?> type) {
  		if (this == NONE) {
  			return NONE;
  		}
  		if (ObjectUtils.nullSafeEquals(resolve(), type)) {
  			return this;
  		}
  		for (ResolvableType interfaceType : getInterfaces()) {
  			ResolvableType interfaceAsType = interfaceType.as(type);
  			if (interfaceAsType != NONE) {
  				return interfaceAsType;
  			}
  		}
  		return getSuperType().as(type);
  	}
docs: 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 class type
  @return a {@link ResolvableType} representing this object as the specified
  type or {@link #NONE}
  @see #asCollection()
  @see #asMap()
  @see #getSuperType()
  @see #getInterfaces()