Btw, just want to share, I once saw an agent that called "Signatures" or something like this. Tricky and beautiful in some way. The agent is designed to provide synthetic interface that depicts all public methods of the class for each class within instrumented classloader. So that in such runtime each object have an indirect "signature" interface that bound to this object. I have no idea how the agent makes changes for a references type (fields, variables, parameters), but it's works somehow, at such runtime each reference have a type of synthetic "signature" interface, and a whole graph of objects is build over such interfaces.