You may take also a look at java agents.
Lombok isn't only an Annotation processor. It accesses and manipulates internal compiler states/Syntax trees etc. mostly over non official APIs. So the learning curve is very steep.
A java agent can be simply attached to a JVM, gets the bytecode as byte array before a class is loaded and can replace that bytecode.
To manipulate the bytecode, you need a parser library (like ASM) to transform the bytecode.
There are lots of samples e. g.:
Note: Normally, an agent needs to be loaded at runtime (which may add performance overhead) but it is also possible to transform the bytecode at compile time (we use the ebean-maven-plugin that applies the ebean-agent at compile time)
Compared to lombok or AOP you may even nedd not to add additional annotations to your legacy classes (see the maven-color example in the link above)
I would suggest to experiment a bit with java-agents. If you have understood the concept, it should be easier to adapt that to lombok or AOP. (they all have to manipulate an abstract syntax tree somewhere)
Roland