ClassPool pool = ClassPool.getDefault();
CtClass ctClass = pool.get("com.example.MyClass");
CtClass ctClass = pool.get("com.example.MyClass");
CtMethod ctMethod = ctClass.getDeclaredMethod("myMethod");
ctMethod.insertBefore("{ System.out.println(\"Entering myMethod\"); }");
ctMethod.insertAfter("{ System.out.println(\"Exiting myMethod\"); }");
ctClass.writeFile();
Class<?> optimizedClass = ctClass.toClass();
Object instance = optimizedClass.newInstance();
Method optimizedMethod = optimizedClass.getDeclaredMethod("myMethod");
optimizedMethod.invoke(instance);