class com.sun.tools.example.trace.EventThread$ThreadTrace
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.sun.tools.example.trace.EventThread$ThreadTrace
  super_class: java.lang.Object
{
  final com.sun.jdi.ThreadReference thread;
    descriptor: Lcom/sun/jdi/ThreadReference;
    flags: (0x0010) ACC_FINAL

  final java.lang.String baseIndent;
    descriptor: Ljava/lang/String;
    flags: (0x0010) ACC_FINAL

  static final java.lang.String threadDelta;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "                     "

  java.lang.StringBuffer indent;
    descriptor: Ljava/lang/StringBuffer;
    flags: (0x0000) 

  final com.sun.tools.example.trace.EventThread this$0;
    descriptor: Lcom/sun/tools/example/trace/EventThread;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  void <init>(com.sun.tools.example.trace.EventThread, com.sun.jdi.ThreadReference);
    descriptor: (Lcom/sun/tools/example/trace/EventThread;Lcom/sun/jdi/ThreadReference;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
        start local 2 // com.sun.jdi.ThreadReference thread
         0: .line 140
            aload 0 /* this */
            aload 1
            putfield com.sun.tools.example.trace.EventThread$ThreadTrace.this$0:Lcom/sun/tools/example/trace/EventThread;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 141
            aload 0 /* this */
            aload 2 /* thread */
            putfield com.sun.tools.example.trace.EventThread$ThreadTrace.thread:Lcom/sun/jdi/ThreadReference;
         2: .line 142
            aload 0 /* this */
            getstatic com.sun.tools.example.trace.EventThread.nextBaseIndent:Ljava/lang/String;
            putfield com.sun.tools.example.trace.EventThread$ThreadTrace.baseIndent:Ljava/lang/String;
         3: .line 143
            aload 0 /* this */
            new java.lang.StringBuffer
            dup
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.baseIndent:Ljava/lang/String;
            invokespecial java.lang.StringBuffer.<init>:(Ljava/lang/String;)V
            putfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
         4: .line 144
            getstatic com.sun.tools.example.trace.EventThread.nextBaseIndent:Ljava/lang/String;
            new java.lang.StringBuilder
            dup_x1
            swap
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "                     "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putstatic com.sun.tools.example.trace.EventThread.nextBaseIndent:Ljava/lang/String;
         5: .line 145
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "====== "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* thread */
            invokeinterface com.sun.jdi.ThreadReference.name:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " ======"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.println:(Ljava/lang/String;)V
         6: .line 146
            return
        end local 2 // com.sun.jdi.ThreadReference thread
        end local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
            0    7     2  thread  Lcom/sun/jdi/ThreadReference;
    MethodParameters:
        Name  Flags
      this$0  final
      thread  

  private void println(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
        start local 1 // java.lang.String str
         0: .line 149
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.this$0:Lcom/sun/tools/example/trace/EventThread;
            getfield com.sun.tools.example.trace.EventThread.writer:Ljava/io/PrintWriter;
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
            invokevirtual java.io.PrintWriter.print:(Ljava/lang/Object;)V
         1: .line 150
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.this$0:Lcom/sun/tools/example/trace/EventThread;
            getfield com.sun.tools.example.trace.EventThread.writer:Ljava/io/PrintWriter;
            aload 1 /* str */
            invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)V
         2: .line 151
            return
        end local 1 // java.lang.String str
        end local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
            0    3     1   str  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      str   

  void methodEntryEvent(com.sun.jdi.event.MethodEntryEvent);
    descriptor: (Lcom/sun/jdi/event/MethodEntryEvent;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
        start local 1 // com.sun.jdi.event.MethodEntryEvent event
         0: .line 154
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            aload 1 /* event */
            invokeinterface com.sun.jdi.event.MethodEntryEvent.method:()Lcom/sun/jdi/Method;
            invokeinterface com.sun.jdi.Method.name:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "  --  "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         1: .line 155
            aload 1 /* event */
            invokeinterface com.sun.jdi.event.MethodEntryEvent.method:()Lcom/sun/jdi/Method;
            invokeinterface com.sun.jdi.Method.declaringType:()Lcom/sun/jdi/ReferenceType;
            invokeinterface com.sun.jdi.ReferenceType.name:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         2: .line 154
            invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.println:(Ljava/lang/String;)V
         3: .line 156
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
            ldc "| "
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         4: .line 157
            return
        end local 1 // com.sun.jdi.event.MethodEntryEvent event
        end local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
            0    5     1  event  Lcom/sun/jdi/event/MethodEntryEvent;
    MethodParameters:
       Name  Flags
      event  

  void methodExitEvent(com.sun.jdi.event.MethodExitEvent);
    descriptor: (Lcom/sun/jdi/event/MethodExitEvent;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
        start local 1 // com.sun.jdi.event.MethodExitEvent event
         0: .line 160
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
            invokevirtual java.lang.StringBuffer.length:()I
            iconst_2
            isub
            invokevirtual java.lang.StringBuffer.setLength:(I)V
         1: .line 161
            return
        end local 1 // com.sun.jdi.event.MethodExitEvent event
        end local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
            0    2     1  event  Lcom/sun/jdi/event/MethodExitEvent;
    MethodParameters:
       Name  Flags
      event  

  void fieldWatchEvent(com.sun.jdi.event.ModificationWatchpointEvent);
    descriptor: (Lcom/sun/jdi/event/ModificationWatchpointEvent;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
        start local 1 // com.sun.jdi.event.ModificationWatchpointEvent event
         0: .line 164
            aload 1 /* event */
            invokeinterface com.sun.jdi.event.ModificationWatchpointEvent.field:()Lcom/sun/jdi/Field;
            astore 2 /* field */
        start local 2 // com.sun.jdi.Field field
         1: .line 165
            aload 1 /* event */
            invokeinterface com.sun.jdi.event.ModificationWatchpointEvent.valueToBe:()Lcom/sun/jdi/Value;
            astore 3 /* value */
        start local 3 // com.sun.jdi.Value value
         2: .line 166
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "    "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* field */
            invokeinterface com.sun.jdi.Field.name:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* value */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.println:(Ljava/lang/String;)V
         3: .line 167
            return
        end local 3 // com.sun.jdi.Value value
        end local 2 // com.sun.jdi.Field field
        end local 1 // com.sun.jdi.event.ModificationWatchpointEvent event
        end local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
            0    4     1  event  Lcom/sun/jdi/event/ModificationWatchpointEvent;
            1    4     2  field  Lcom/sun/jdi/Field;
            2    4     3  value  Lcom/sun/jdi/Value;
    MethodParameters:
       Name  Flags
      event  

  void exceptionEvent(com.sun.jdi.event.ExceptionEvent);
    descriptor: (Lcom/sun/jdi/event/ExceptionEvent;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
        start local 1 // com.sun.jdi.event.ExceptionEvent event
         0: .line 170
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Exception: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* event */
            invokeinterface com.sun.jdi.event.ExceptionEvent.exception:()Lcom/sun/jdi/ObjectReference;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         1: .line 171
            ldc " catch: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* event */
            invokeinterface com.sun.jdi.event.ExceptionEvent.catchLocation:()Lcom/sun/jdi/Location;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         2: .line 170
            invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.println:(Ljava/lang/String;)V
         3: .line 174
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.this$0:Lcom/sun/tools/example/trace/EventThread;
            getfield com.sun.tools.example.trace.EventThread.vm:Lcom/sun/jdi/VirtualMachine;
            invokeinterface com.sun.jdi.VirtualMachine.eventRequestManager:()Lcom/sun/jdi/request/EventRequestManager;
            astore 2 /* mgr */
        start local 2 // com.sun.jdi.request.EventRequestManager mgr
         4: .line 175
            aload 2 /* mgr */
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.thread:Lcom/sun/jdi/ThreadReference;
         5: .line 176
            iconst_m1
         6: .line 177
            iconst_1
         7: .line 175
            invokeinterface com.sun.jdi.request.EventRequestManager.createStepRequest:(Lcom/sun/jdi/ThreadReference;II)Lcom/sun/jdi/request/StepRequest;
            astore 3 /* req */
        start local 3 // com.sun.jdi.request.StepRequest req
         8: .line 178
            aload 3 /* req */
            iconst_1
            invokeinterface com.sun.jdi.request.StepRequest.addCountFilter:(I)V
         9: .line 179
            aload 3 /* req */
            iconst_2
            invokeinterface com.sun.jdi.request.StepRequest.setSuspendPolicy:(I)V
        10: .line 180
            aload 3 /* req */
            invokeinterface com.sun.jdi.request.StepRequest.enable:()V
        11: .line 181
            return
        end local 3 // com.sun.jdi.request.StepRequest req
        end local 2 // com.sun.jdi.request.EventRequestManager mgr
        end local 1 // com.sun.jdi.event.ExceptionEvent event
        end local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   12     0   this  Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
            0   12     1  event  Lcom/sun/jdi/event/ExceptionEvent;
            4   12     2    mgr  Lcom/sun/jdi/request/EventRequestManager;
            8   12     3    req  Lcom/sun/jdi/request/StepRequest;
    MethodParameters:
       Name  Flags
      event  

  void stepEvent(com.sun.jdi.event.StepEvent);
    descriptor: (Lcom/sun/jdi/event/StepEvent;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
        start local 1 // com.sun.jdi.event.StepEvent event
         0: .line 186
            iconst_0
            istore 2 /* cnt */
        start local 2 // int cnt
         1: .line 187
            aload 0 /* this */
            new java.lang.StringBuffer
            dup
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.baseIndent:Ljava/lang/String;
            invokespecial java.lang.StringBuffer.<init>:(Ljava/lang/String;)V
            putfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
         2: .line 189
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.thread:Lcom/sun/jdi/ThreadReference;
            invokeinterface com.sun.jdi.ThreadReference.frameCount:()I
            istore 2 /* cnt */
         3: .line 190
            goto 7
      StackMap locals: com.sun.tools.example.trace.EventThread$ThreadTrace com.sun.jdi.event.StepEvent int
      StackMap stack: com.sun.jdi.IncompatibleThreadStateException
         4: pop
         5: .line 192
            goto 7
         6: .line 193
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
            ldc "| "
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         7: .line 192
      StackMap locals:
      StackMap stack:
            iload 2 /* cnt */
            iinc 2 /* cnt */ -1
            ifgt 6
         8: .line 196
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.this$0:Lcom/sun/tools/example/trace/EventThread;
            getfield com.sun.tools.example.trace.EventThread.vm:Lcom/sun/jdi/VirtualMachine;
            invokeinterface com.sun.jdi.VirtualMachine.eventRequestManager:()Lcom/sun/jdi/request/EventRequestManager;
            astore 3 /* mgr */
        start local 3 // com.sun.jdi.request.EventRequestManager mgr
         9: .line 197
            aload 3 /* mgr */
            aload 1 /* event */
            invokeinterface com.sun.jdi.event.StepEvent.request:()Lcom/sun/jdi/request/EventRequest;
            invokeinterface com.sun.jdi.request.EventRequestManager.deleteEventRequest:(Lcom/sun/jdi/request/EventRequest;)V
        10: .line 198
            return
        end local 3 // com.sun.jdi.request.EventRequestManager mgr
        end local 2 // int cnt
        end local 1 // com.sun.jdi.event.StepEvent event
        end local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
            0   11     1  event  Lcom/sun/jdi/event/StepEvent;
            1   11     2    cnt  I
            9   11     3    mgr  Lcom/sun/jdi/request/EventRequestManager;
      Exception table:
        from    to  target  type
           2     3       4  Class com.sun.jdi.IncompatibleThreadStateException
    MethodParameters:
       Name  Flags
      event  

  void threadDeathEvent(com.sun.jdi.event.ThreadDeathEvent);
    descriptor: (Lcom/sun/jdi/event/ThreadDeathEvent;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
        start local 1 // com.sun.jdi.event.ThreadDeathEvent event
         0: .line 201
            aload 0 /* this */
            new java.lang.StringBuffer
            dup
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.baseIndent:Ljava/lang/String;
            invokespecial java.lang.StringBuffer.<init>:(Ljava/lang/String;)V
            putfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
         1: .line 202
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "====== "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.sun.tools.example.trace.EventThread$ThreadTrace.thread:Lcom/sun/jdi/ThreadReference;
            invokeinterface com.sun.jdi.ThreadReference.name:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " end ======"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.println:(Ljava/lang/String;)V
         2: .line 203
            return
        end local 1 // com.sun.jdi.event.ThreadDeathEvent event
        end local 0 // com.sun.tools.example.trace.EventThread$ThreadTrace this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
            0    3     1  event  Lcom/sun/jdi/event/ThreadDeathEvent;
    MethodParameters:
       Name  Flags
      event  
}
SourceFile: "EventThread.java"
NestHost: com.sun.tools.example.trace.EventThread
InnerClasses:
  ThreadTrace = com.sun.tools.example.trace.EventThread$ThreadTrace of com.sun.tools.example.trace.EventThread