Reflection
[1] Reflection-Oriented Programming
[2] Procedural Reflection in Programming Languages
[3] Evolving a Reflective Language Lessons Learned from Implementing Traits