code: public TypeDescriptor upcast(Class<?> superType) {
  		if (superType == null) {
  			return null;
  		}
  		Assert.isAssignable(superType, getType());
  		return new TypeDescriptor(superType, this.elementTypeDescriptor,
  				this.mapKeyTypeDescriptor, this.mapValueTypeDescriptor, this.annotations);
  	}
docs: Cast this {@link TypeDescriptor} to a superclass or implemented interface
  preserving annotations and nested type context.
  @param superType the super type to cast to (can be {@code null}
  @return a new TypeDescriptor for the up-cast type
  @throws IllegalArgumentException if this type is not assignable to the super-type