public class DynamicHelloWorld extends java.lang.Object implements java.io.Serializable:
  public void <init>():
                    ALOAD_0     // DynamicHelloWorld this   (line 8)
                    INVOKESPECIAL java.lang.Object.<init> ()V
    constructor-execution(void DynamicHelloWorld.<init>())
    |               RETURN
    constructor-execution(void DynamicHelloWorld.<init>())
  end public void <init>()

  public static void main(String[]):
    method-execution(void DynamicHelloWorld.main(java.lang.String[]))
    | catch java.lang.UnsupportedOperationException -> E0
    | |             NEW DynamicHelloWorld   (line 12)
    | |             DUP
    | | constructor-call(void DynamicHelloWorld.<init>())
    | | |           INVOKESPECIAL DynamicHelloWorld.<init> ()V
    | | constructor-call(void DynamicHelloWorld.<init>())
    | |             LDC "hello"
    | | field-get(java.util.List java.util.Collections.EMPTY_LIST)
    | | |           GETSTATIC java.util.Collections.EMPTY_LIST Ljava/util/List;
    | | field-get(java.util.List java.util.Collections.EMPTY_LIST)
    | | method-call(java.lang.String DynamicHelloWorld.doit(java.lang.String, java.util.List))
    | | |           INVOKEVIRTUAL DynamicHelloWorld.doit (Ljava/lang/String;Ljava/util/List;)Ljava/lang/String;
    | | method-call(java.lang.String DynamicHelloWorld.doit(java.lang.String, java.util.List))
    | |             POP
    | |             GOTO L0
    | catch java.lang.UnsupportedOperationException -> E0
    |           E0: ASTORE_1   (line 13)
    | field-get(java.io.PrintStream java.lang.System.out)
    | |             GETSTATIC java.lang.System.out Ljava/io/PrintStream;   (line 14)
    | field-get(java.io.PrintStream java.lang.System.out)
    |               NEW java.lang.StringBuffer
    |               DUP
    |               LDC "expected and caught: "
    | constructor-call(void java.lang.StringBuffer.<init>(java.lang.String))
    | |             INVOKESPECIAL java.lang.StringBuffer.<init> (Ljava/lang/String;)V
    | constructor-call(void java.lang.StringBuffer.<init>(java.lang.String))
    |               ALOAD_1     // java.lang.UnsupportedOperationException t
    | method-call(java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.Object))
    | |             INVOKEVIRTUAL java.lang.StringBuffer.append (Ljava/lang/Object;)Ljava/lang/StringBuffer;
    | method-call(java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.Object))
    | method-call(java.lang.String java.lang.StringBuffer.toString())
    | |             INVOKEVIRTUAL java.lang.StringBuffer.toString ()Ljava/lang/String;
    | method-call(java.lang.String java.lang.StringBuffer.toString())
    | method-call(void java.io.PrintStream.println(java.lang.String))
    | |             INVOKEVIRTUAL java.io.PrintStream.println (Ljava/lang/String;)V
    | method-call(void java.io.PrintStream.println(java.lang.String))
    |               RETURN   (line 15)
    |           L0: NEW java.lang.RuntimeException   (line 17)
    |               DUP
    |               LDC "should have caught exception"
    | constructor-call(void java.lang.RuntimeException.<init>(java.lang.String))
    | |             INVOKESPECIAL java.lang.RuntimeException.<init> (Ljava/lang/String;)V
    | constructor-call(void java.lang.RuntimeException.<init>(java.lang.String))
    |               ATHROW
    method-execution(void DynamicHelloWorld.main(java.lang.String[]))
  end public static void main(String[])

  String doit(String, java.util.List):
                    ALOAD_1
                    ASTORE_3
                    ALOAD_2
                    ASTORE 4
    method-execution(java.lang.String DynamicHelloWorld.doit(java.lang.String, java.util.List))
    |               INVOKESTATIC MyTrace.aspectOf ()LMyTrace;
    |               ALOAD_0
    |               INVOKEVIRTUAL Trace.ajc$before$Trace$51 (Ljava/lang/Object;)V
    |               ALOAD_0
    |               ALOAD_3
    |               ALOAD 4
    |               INVOKESTATIC MyTrace.aspectOf ()LMyTrace;
    |               ACONST_NULL
    |               INVOKESTATIC DynamicHelloWorld.doit_aroundBody3$advice (LDynamicHelloWorld;Ljava/lang/String;Ljava/util/List;LTrace;Lorg/aspectj/runtime/internal/AroundClosure;)Ljava/lang/Object;
    |               CHECKCAST java.lang.String
    |               GOTO L0
    |           L0: DUP
    |               ASTORE 5
    |               INVOKESTATIC MyTrace.aspectOf ()LMyTrace;
    |               ALOAD_0
    |               ALOAD 5
    |               INVOKEVIRTUAL MyTrace.ajc$afterReturning$MyTrace$6e (Ljava/lang/Object;Ljava/lang/Object;)V
    |               ARETURN
    method-execution(java.lang.String DynamicHelloWorld.doit(java.lang.String, java.util.List))
  end String doit(String, java.util.List)

  static final String doit_aroundBody0(DynamicHelloWorld, String, java.util.List):
                    ALOAD_2   (line 21)
                    ALOAD_1
    method-call(boolean java.util.List.add(java.lang.Object))
    |               INVOKEINTERFACE java.util.List.add (Ljava/lang/Object;)Z
    method-call(boolean java.util.List.add(java.lang.Object))
                    POP
                    ALOAD_2   (line 22)
    method-call(java.lang.String java.lang.Object.toString())
    |               INVOKEVIRTUAL java.lang.Object.toString ()Ljava/lang/String;
    method-call(java.lang.String java.lang.Object.toString())
                    ARETURN
  end static final String doit_aroundBody0(DynamicHelloWorld, String, java.util.List)

  static final Object doit_aroundBody1$advice(DynamicHelloWorld, String, java.util.List, Trace, Object, org.aspectj.runtime.internal.AroundClosure):
                    GETSTATIC java.lang.System.out Ljava/io/PrintStream;   (line 17)
                    NEW java.lang.StringBuffer
                    DUP
                    LDC "start around(2): "
                    INVOKESPECIAL java.lang.StringBuffer.<init> (Ljava/lang/String;)V
                    ALOAD 4
                    INVOKEVIRTUAL java.lang.StringBuffer.append (Ljava/lang/Object;)Ljava/lang/StringBuffer;
                    INVOKEVIRTUAL java.lang.StringBuffer.toString ()Ljava/lang/String;
                    INVOKEVIRTUAL java.io.PrintStream.println (Ljava/lang/String;)V
                    ALOAD 4   (line 18)
                    ALOAD 5
                    ASTORE 7
                    ASTORE 8
                    ALOAD 8
                    CHECKCAST DynamicHelloWorld
                    ALOAD_1
                    ALOAD_2
                    INVOKESTATIC DynamicHelloWorld.doit_aroundBody0 (LDynamicHelloWorld;Ljava/lang/String;Ljava/util/List;)Ljava/lang/String;
                    ASTORE 6
                    GETSTATIC java.lang.System.out Ljava/io/PrintStream;   (line 19)
                    NEW java.lang.StringBuffer
                    DUP
                    LDC "exiting around with(2): "
                    INVOKESPECIAL java.lang.StringBuffer.<init> (Ljava/lang/String;)V
                    ALOAD 6
                    INVOKEVIRTUAL java.lang.StringBuffer.append (Ljava/lang/Object;)Ljava/lang/StringBuffer;
                    INVOKEVIRTUAL java.lang.StringBuffer.toString ()Ljava/lang/String;
                    INVOKEVIRTUAL java.io.PrintStream.println (Ljava/lang/String;)V
                    ALOAD 6   (line 20)
                    ARETURN
  end static final Object doit_aroundBody1$advice(DynamicHelloWorld, String, java.util.List, Trace, Object, org.aspectj.runtime.internal.AroundClosure)

  static final String doit_aroundBody2(DynamicHelloWorld, String, java.util.List):
                    ALOAD_0
                    ALOAD_1
                    ALOAD_2
                    INVOKESTATIC MyTrace.aspectOf ()LMyTrace;
                    ALOAD_0
                    ACONST_NULL
                    INVOKESTATIC DynamicHelloWorld.doit_aroundBody1$advice (LDynamicHelloWorld;Ljava/lang/String;Ljava/util/List;LTrace;Ljava/lang/Object;Lorg/aspectj/runtime/internal/AroundClosure;)Ljava/lang/Object;
                    CHECKCAST java.lang.String
                    ARETURN
  end static final String doit_aroundBody2(DynamicHelloWorld, String, java.util.List)

  static final Object doit_aroundBody3$advice(DynamicHelloWorld, String, java.util.List, Trace, org.aspectj.runtime.internal.AroundClosure):
                    LDC "Hi"   (line 9)
                    ASTORE 5
                    GETSTATIC java.lang.System.out Ljava/io/PrintStream;   (line 10)
                    NEW java.lang.StringBuffer
                    DUP
                    LDC "start around: "
                    INVOKESPECIAL java.lang.StringBuffer.<init> (Ljava/lang/String;)V
                    ALOAD 5
                    INVOKEVIRTUAL java.lang.StringBuffer.append (Ljava/lang/Object;)Ljava/lang/StringBuffer;
                    INVOKEVIRTUAL java.lang.StringBuffer.toString ()Ljava/lang/String;
                    INVOKEVIRTUAL java.io.PrintStream.println (Ljava/lang/String;)V
                    ALOAD 4   (line 11)
                    ASTORE 7
                    ALOAD_0
                    ALOAD_1
                    ALOAD_2
                    INVOKESTATIC DynamicHelloWorld.doit_aroundBody2 (LDynamicHelloWorld;Ljava/lang/String;Ljava/util/List;)Ljava/lang/String;
                    ASTORE 6
                    GETSTATIC java.lang.System.out Ljava/io/PrintStream;   (line 12)
                    NEW java.lang.StringBuffer
                    DUP
                    LDC "exiting around with: "
                    INVOKESPECIAL java.lang.StringBuffer.<init> (Ljava/lang/String;)V
                    ALOAD 6
                    INVOKEVIRTUAL java.lang.StringBuffer.append (Ljava/lang/Object;)Ljava/lang/StringBuffer;
                    INVOKEVIRTUAL java.lang.StringBuffer.toString ()Ljava/lang/String;
                    INVOKEVIRTUAL java.io.PrintStream.println (Ljava/lang/String;)V
                    ALOAD 6   (line 13)
                    ARETURN
  end static final Object doit_aroundBody3$advice(DynamicHelloWorld, String, java.util.List, Trace, org.aspectj.runtime.internal.AroundClosure)
end public class DynamicHelloWorld
