ClassPool classPool = ClassPool.getDefault();
CtClass ctClass = classPool.get("com.example.MyClass");
CtMethod method = ctClass.getDeclaredMethod("myMethod");
method.insertBefore("{ System.out.println(\"Before method\"); }");
method.insertAfter("{ System.out.println(\"After method\"); }");
CtMethod newMethod = CtNewMethod.make("public void myNewMethod() { System.out.println(\"New method\"); }", ctClass);
ctClass.addMethod(newMethod);
ctClass.writeFile();
ClassPool classPool = ClassPool.getDefault();
CtClass ctClass = classPool.makeClass("com.example.GeneratedClass");
CtField field = new CtField(CtClass.doubleType, "myField", ctClass);
ctClass.addField(field);
CtMethod method = CtNewMethod.make("public void myMethod() { System.out.println(\"Generated method\"); }", ctClass);
ctClass.addMethod(method);
ctClass.writeFile();