Playing with ASM bytecode library
$ mvn clean package
$ ./run.sh
visitAnnotation: desc=Lorg/springdot/sandbox/asm/MyClass;
A.visitEnum: name=number desc=Lorg/springdot/sandbox/asm/MyEnum; value=TWO
Ar.visit: value=abc
Ar.visit: value=def
visitField: name=aStringField desc=Ljava/lang/String;
F.visitAnnotation: desc=Lorg/springdot/sandbox/asm/MyField;
visitMethod: name=<init> desc=()V
visitMethod: name=aMethod desc=()V
M.visitAnnotation: desc=Lorg/springdot/sandbox/asm/MyMethod;