Adding Traits to (Statically Typed) Languages
Featherweight Java: a minimal core calculus for Java and GJ