One can use jdk1.5 java-agents to bootstrap instrumentation process. Here is a samples that show how one can use this feature > java -classpath .:build/jiapi/lib/jiapi.jar:build/classes/:lib/log4j-1.2.8.jar -javaagent:build/jiapi/lib/jiapi.jar=ir=*Foo*,resolution=*println*,dump samples.Foo where ir=*Foo* means using inclusion rule *Foo*, which instruments all the classes, that has 'Foo' somewhere in its fully qualified name resolution=*println* means instrument for method invocations that call println methods of any object/class dump means that dump instrumented class into working directory. One can give multiple -javaagent switches in command line, thus providing different instrumentation strategies.