Chiba and Tatsubori [9] extend Java reflection to permit language extensions by re-implementing java.lang.Class. They put forth the classes openjava.mop.OJClass and OJMethod as replacements for Class and Method. The ability to perform language customization in addition to introspection is achieved using compile-time reflection in their OpenJava compiler [8]. In comparison, we make a point of preserving class names in the mirrored package to ensure that code can run with either the original reflection or the mirrored repository. Instead of creating a dedicated compiler, we can rely on a standard Java compiler. VISITOR [13] furnishes the extended functionality non-invasively.
Javassist [8] supports structural reflection in Java by bytecode manipulation at load-lime without replacing the compiler. Javassist relies on a configuration file and class loading interception. In contrast, we focus on supporting run-time introspection.