Compile-time reflection and metaprogramming for Java
Featherweight Java: a minimal core calculus for Java and GJ