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));
	}
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.
Example - <i > typeOf< / i >