1 Java ’ s Reflection Model and Design Patterns