A first-class approach to genericity
Featherweight Java: a minimal core calculus for Java and GJ