Builds a special
TypeResolver
capable of resolving type variables by using a combination of two type hierarchies.
The special resolver is only necessary for situations where the type of the event object contains an unresolved type variable
which cannot be resolved using the selected event type because the selected event type is a subtype of the event object.
For example:
private Event
> event;
event.fire(new ArrayList());
The event object type is ArrayList
(raw type due to type erasure) The selected type is List
We cannot simply infer the correct type (ArrayList) from the runtime type nor from the selected type. What this
special resolver does is that it combines the following type variable assignments:
L -> E
L -> String
and resolves E to String. The resolver is capable of doing it recursively for parameterized types.