$ java -cp classes:asm-9.11.1.jar... demo.ParseDemo (25.0.5+8-LTS) == header == bytes : 1488 this : demo/Target super : java/lang/Object version : 69.0 (ClassFile.JAVA_25_VERSION = 69) flags : public,super constant pool : 69 slots == fields == final,private name Ljava/lang/String; private calls I == methods == public (Ljava/lang/String;)V public,static fib(I)I public,static sumTo(I)J public greet(Ljava/lang/String;)Ljava/lang/String; public pause(J)V public,static boom()V public,static explode([I)I public calls()I == class elements, in file order (the model is a stream of elements) == AccessFlags ClassFileVersion Superclass Interfaces field name field calls method method fib method sumTo method greet method pause method boom method explode method calls SourceFile=Target.java BoundInnerClassesAttribute == fib(I)I, instruction by instruction == ILOAD_0 ICONST_2 IF_ICMPGE ILOAD_0 GOTO ILOAD_0 ICONST_1 ISUB INVOKESTATIC demo/Target.fib(I)I ILOAD_0 ICONST_2 ISUB INVOKESTATIC demo/Target.fib(I)I IADD IRETURN == invoke targets in the whole class == 2 x demo/Target.fib 1 x indy:makeConcatWithConstants 1 x java/lang/IllegalStateException. 1 x java/lang/Object. 1 x java/lang/Thread.sleep == a JDK class from the runtime image: java.lang.String == bytes 50116, major 69, methods 171, fields 11, interfaces 5 PASS Target.class is class-file version 69 (compiled with --release 25) PASS Target has 8 methods (constructor + 7) PASS fib calls itself twice PASS greet() uses invokedynamic string concatenation exit=0