The Theory and Practice of Runtime Reflection by Andreas Bauer