ASM is fairly straightforward, if you have any experience with assembly its be even easier.
You can basically manipulate the compiled java code, so you can do everything that you can do with regular java.
The hardest part is debugging, really. Especially when you have some nice ide plugins :p