src/core/se/jbee/inject/Type.java
public Type<T> parametizedAsUpperBounds() {
		if (!isParameterized())
			return isRawType()
				? parametized(wildcards(rawType.getTypeParameters()))
				: this;
		if (areAllTypeParametersAreUpperBounds())
			return this;
		return new Type<>(upperBound, rawType,
				arrayMap(params, Type::asUpperBound));
	}
public Type<T> parametizedAsUpperBounds() {
		if (!isParameterized())
			return isRawType()
				? parametized(wildcards(rawType.getTypeParameters()))
				: this;
		if (areAllTypeParametersAreUpperBounds())
			return this;
		return new Type<>(upperBound, rawType,
				arrayMap(params, Type::asUpperBound));
	}
Example - <i>typeOf</i>

<pre>
Map&lt;String,String&gt; =&gt; Map&lt;? extends String, ? extends String&gt;
</pre>

@return A {@link Type} having all its type arguments
{@link #asUpperBound()}s. Use this to model &lt;?&gt; wildcard
generic.