make

getImplementationType

Return Java-level implementation type.
The type used to implement types not natively understood by the JVM
or the Java language.
Usually, the identity function. However, a language might handle
union types or template types or type expressions calculated at
run time. In that case return the type used at the Java level,
and known at compile time.

coerceFromObject

Convert an object to a value of this Type.
The result is actually of the implementation type, boxed as appropriate,
so it is suitable for standard reflective operations.
Throw a ClassCastException when this is not possible.