Is there any developer manual on the implementation of javassist. For example a walkthrough of how the replace() method in class javassist.expr.NewExpr works.
http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/tutorial/tutorial2.html#intro might be helpful to you.
Also, step through the replace() method code while running the Javassist unit tests. That is what I have been doing to learn more about Javassist internals.
For example, open test source javassist.JvstTest4 in your debugger and set a breakpoint in method testAaload(), run the following command:
mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8787 -Xnoagent -Djava.compiler=NONE" clean install -Dtest=javassist.JvstTest4
Then instruct your debugger to attach to port 8787.