Constructs a new type literal. Derives represented class from type
parameter.
Clients create an empty anonymous subclass. Doing so embeds the type
parameter in the anonymous class's type hierarchy so we can reconstitute it
at runtime despite erasure.