Provides an ASM visitor that constructs a tree representation of the classes it visits. This class adapter can be useful to implement "complex" class manipulation operations, i.e., operations that would be very hard to implement without using a tree representation (such as optimizing the number of local variables used by a method).
However, this class adapter has a cost: it makes ASM bigger and slower. Indeed it requires more than twenty new classes, and multiplies the time needed to transform a class by almost two (it is almost two times faster to read, "modify" and write a class with a ClassAdapter than with a ClassNode). This is why this package is bundled in an optional asm-tree.jar library that is separated from (but requires) the asm.jar library, which contains the core ASM framework. This is also why it is recommanded not to use this class adapter when it is possible.
The root class is the ClassNode, that can be created from scratch or from the existing bytecode. For example:
ClassReader cr = new ClassReader(source); ClassNode cn = new ClassNode(); cr.accept(cn, true);
Now content of ClassNode can be modified and then serialized back into bytecode:
ClassWriter cw = new ClassWriter(true); cn.accept(cw);
@since ASM 1.3.3