Compile-time reflection and metaprogramming for Java
Traits: Composable Units of Behaviour