class com.sun.tools.example.debug.tty.ThreadInfo
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.sun.tools.example.debug.tty.ThreadInfo
  super_class: java.lang.Object
{
  private static java.util.List<com.sun.tools.example.debug.tty.ThreadInfo> threads;
    descriptor: Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/util/List<Lcom/sun/tools/example/debug/tty/ThreadInfo;>;

  private static boolean gotInitialThreads;
    descriptor: Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static com.sun.tools.example.debug.tty.ThreadInfo current;
    descriptor: Lcom/sun/tools/example/debug/tty/ThreadInfo;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static com.sun.jdi.ThreadGroupReference group;
    descriptor: Lcom/sun/jdi/ThreadGroupReference;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private final com.sun.jdi.ThreadReference thread;
    descriptor: Lcom/sun/jdi/ThreadReference;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int currentFrameIndex;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 48
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            invokestatic java.util.Collections.synchronizedList:(Ljava/util/List;)Ljava/util/List;
            putstatic com.sun.tools.example.debug.tty.ThreadInfo.threads:Ljava/util/List;
         1: .line 49
            iconst_0
            putstatic com.sun.tools.example.debug.tty.ThreadInfo.gotInitialThreads:Z
         2: .line 51
            aconst_null
            putstatic com.sun.tools.example.debug.tty.ThreadInfo.current:Lcom/sun/tools/example/debug/tty/ThreadInfo;
         3: .line 52
            aconst_null
            putstatic com.sun.tools.example.debug.tty.ThreadInfo.group:Lcom/sun/jdi/ThreadGroupReference;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(com.sun.jdi.ThreadReference);
    descriptor: (Lcom/sun/jdi/ThreadReference;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
        start local 1 // com.sun.jdi.ThreadReference thread
         0: .line 57
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 55
            aload 0 /* this */
            iconst_0
            putfield com.sun.tools.example.debug.tty.ThreadInfo.currentFrameIndex:I
         2: .line 58
            aload 0 /* this */
            aload 1 /* thread */
            putfield com.sun.tools.example.debug.tty.ThreadInfo.thread:Lcom/sun/jdi/ThreadReference;
         3: .line 59
            aload 1 /* thread */
            ifnonnull 5
         4: .line 60
            ldc "Internal error: null ThreadInfo created"
            invokestatic com.sun.tools.example.debug.tty.MessageOutput.fatalError:(Ljava/lang/String;)V
         5: .line 62
      StackMap locals: com.sun.tools.example.debug.tty.ThreadInfo com.sun.jdi.ThreadReference
      StackMap stack:
            return
        end local 1 // com.sun.jdi.ThreadReference thread
        end local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lcom/sun/tools/example/debug/tty/ThreadInfo;
            0    6     1  thread  Lcom/sun/jdi/ThreadReference;
    MethodParameters:
        Name  Flags
      thread  

  private static void initThreads();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=0
         0: .line 65
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.gotInitialThreads:Z
            ifne 6
         1: .line 66
            invokestatic com.sun.tools.example.debug.tty.Env.vm:()Lcom/sun/jdi/VirtualMachine;
            invokeinterface com.sun.jdi.VirtualMachine.allThreads:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 1
            goto 4
      StackMap locals: top java.util.Iterator
      StackMap stack:
         2: aload 1
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.sun.jdi.ThreadReference
            astore 0 /* thread */
        start local 0 // com.sun.jdi.ThreadReference thread
         3: .line 67
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.threads:Ljava/util/List;
            new com.sun.tools.example.debug.tty.ThreadInfo
            dup
            aload 0 /* thread */
            invokespecial com.sun.tools.example.debug.tty.ThreadInfo.<init>:(Lcom/sun/jdi/ThreadReference;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 0 // com.sun.jdi.ThreadReference thread
         4: .line 66
      StackMap locals:
      StackMap stack:
            aload 1
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 69
            iconst_1
            putstatic com.sun.tools.example.debug.tty.ThreadInfo.gotInitialThreads:Z
         6: .line 71
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            3    4     0  thread  Lcom/sun/jdi/ThreadReference;

  static void addThread(com.sun.jdi.ThreadReference);
    descriptor: (Lcom/sun/jdi/ThreadReference;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // com.sun.jdi.ThreadReference thread
         0: .line 74
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.threads:Ljava/util/List;
            dup
            astore 1
            monitorenter
         1: .line 75
            invokestatic com.sun.tools.example.debug.tty.ThreadInfo.initThreads:()V
         2: .line 76
            new com.sun.tools.example.debug.tty.ThreadInfo
            dup
            aload 0 /* thread */
            invokespecial com.sun.tools.example.debug.tty.ThreadInfo.<init>:(Lcom/sun/jdi/ThreadReference;)V
            astore 2 /* ti */
        start local 2 // com.sun.tools.example.debug.tty.ThreadInfo ti
         3: .line 80
            aload 0 /* thread */
            invokestatic com.sun.tools.example.debug.tty.ThreadInfo.getThreadInfo:(Lcom/sun/jdi/ThreadReference;)Lcom/sun/tools/example/debug/tty/ThreadInfo;
            ifnonnull 5
         4: .line 81
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.threads:Ljava/util/List;
            aload 2 /* ti */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // com.sun.tools.example.debug.tty.ThreadInfo ti
         5: .line 74
      StackMap locals: java.util.List
      StackMap stack:
            aload 1
            monitorexit
         6: goto 9
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: aload 1
            monitorexit
         8: athrow
         9: .line 84
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.jdi.ThreadReference thread
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0  thread  Lcom/sun/jdi/ThreadReference;
            3    5     2      ti  Lcom/sun/tools/example/debug/tty/ThreadInfo;
      Exception table:
        from    to  target  type
           1     6       7  any
           7     8       7  any
    MethodParameters:
        Name  Flags
      thread  

  static void removeThread(com.sun.jdi.ThreadReference);
    descriptor: (Lcom/sun/jdi/ThreadReference;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.sun.jdi.ThreadReference thread
         0: .line 87
            aload 0 /* thread */
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.current:Lcom/sun/tools/example/debug/tty/ThreadInfo;
            invokeinterface com.sun.jdi.ThreadReference.equals:(Ljava/lang/Object;)Z
            ifeq 10
         1: .line 95
            new java.lang.StringBuilder
            dup
            ldc "\""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* 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;
            astore 1 /* currentThreadName */
        start local 1 // java.lang.String currentThreadName
         2: .line 96
            goto 5
        end local 1 // java.lang.String currentThreadName
      StackMap locals:
      StackMap stack: java.lang.Exception
         3: pop
         4: .line 97
            ldc ""
            astore 1 /* currentThreadName */
        start local 1 // java.lang.String currentThreadName
         5: .line 100
      StackMap locals: java.lang.String
      StackMap stack:
            aconst_null
            invokestatic com.sun.tools.example.debug.tty.ThreadInfo.setCurrentThread:(Lcom/sun/jdi/ThreadReference;)V
         6: .line 102
            invokestatic com.sun.tools.example.debug.tty.MessageOutput.println:()V
         7: .line 103
            ldc "Current thread died. Execution continuing..."
         8: .line 104
            aload 1 /* currentThreadName */
         9: .line 103
            invokestatic com.sun.tools.example.debug.tty.MessageOutput.println:(Ljava/lang/String;Ljava/lang/String;)V
        end local 1 // java.lang.String currentThreadName
        10: .line 106
      StackMap locals:
      StackMap stack:
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.threads:Ljava/util/List;
            aload 0 /* thread */
            invokestatic com.sun.tools.example.debug.tty.ThreadInfo.getThreadInfo:(Lcom/sun/jdi/ThreadReference;)Lcom/sun/tools/example/debug/tty/ThreadInfo;
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
        11: .line 107
            return
        end local 0 // com.sun.jdi.ThreadReference thread
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   12     0             thread  Lcom/sun/jdi/ThreadReference;
            2    3     1  currentThreadName  Ljava/lang/String;
            5   10     1  currentThreadName  Ljava/lang/String;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.Exception
    MethodParameters:
        Name  Flags
      thread  

  static java.util.List<com.sun.tools.example.debug.tty.ThreadInfo> threads();
    descriptor: ()Ljava/util/List;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 110
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.threads:Ljava/util/List;
            dup
            astore 0
            monitorenter
         1: .line 111
            invokestatic com.sun.tools.example.debug.tty.ThreadInfo.initThreads:()V
         2: .line 113
            new java.util.ArrayList
            dup
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.threads:Ljava/util/List;
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            aload 0
            monitorexit
         3: areturn
         4: .line 110
      StackMap locals: java.util.List
      StackMap stack: java.lang.Throwable
            aload 0
            monitorexit
         5: athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any
    Signature: ()Ljava/util/List<Lcom/sun/tools/example/debug/tty/ThreadInfo;>;

  static void invalidateAll();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=3, args_size=0
         0: .line 118
            aconst_null
            putstatic com.sun.tools.example.debug.tty.ThreadInfo.current:Lcom/sun/tools/example/debug/tty/ThreadInfo;
         1: .line 119
            aconst_null
            putstatic com.sun.tools.example.debug.tty.ThreadInfo.group:Lcom/sun/jdi/ThreadGroupReference;
         2: .line 120
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.threads:Ljava/util/List;
            dup
            astore 0
            monitorenter
         3: .line 121
            invokestatic com.sun.tools.example.debug.tty.ThreadInfo.threads:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2
            goto 6
      StackMap locals: java.util.List top java.util.Iterator
      StackMap stack:
         4: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.sun.tools.example.debug.tty.ThreadInfo
            astore 1 /* ti */
        start local 1 // com.sun.tools.example.debug.tty.ThreadInfo ti
         5: .line 122
            aload 1 /* ti */
            invokevirtual com.sun.tools.example.debug.tty.ThreadInfo.invalidate:()V
        end local 1 // com.sun.tools.example.debug.tty.ThreadInfo ti
         6: .line 121
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         7: .line 120
            aload 0
            monitorexit
         8: goto 11
      StackMap locals: java.util.List
      StackMap stack: java.lang.Throwable
         9: aload 0
            monitorexit
        10: athrow
        11: .line 125
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            5    6     1    ti  Lcom/sun/tools/example/debug/tty/ThreadInfo;
      Exception table:
        from    to  target  type
           3     8       9  any
           9    10       9  any

  static void setThreadGroup(com.sun.jdi.ThreadGroupReference);
    descriptor: (Lcom/sun/jdi/ThreadGroupReference;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.jdi.ThreadGroupReference tg
         0: .line 128
            aload 0 /* tg */
            putstatic com.sun.tools.example.debug.tty.ThreadInfo.group:Lcom/sun/jdi/ThreadGroupReference;
         1: .line 129
            return
        end local 0 // com.sun.jdi.ThreadGroupReference tg
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0    tg  Lcom/sun/jdi/ThreadGroupReference;
    MethodParameters:
      Name  Flags
      tg    

  static void setCurrentThread(com.sun.jdi.ThreadReference);
    descriptor: (Lcom/sun/jdi/ThreadReference;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // com.sun.jdi.ThreadReference tr
         0: .line 132
            aload 0 /* tr */
            ifnonnull 3
         1: .line 133
            aconst_null
            invokestatic com.sun.tools.example.debug.tty.ThreadInfo.setCurrentThreadInfo:(Lcom/sun/tools/example/debug/tty/ThreadInfo;)V
         2: .line 134
            goto 5
         3: .line 135
      StackMap locals:
      StackMap stack:
            aload 0 /* tr */
            invokestatic com.sun.tools.example.debug.tty.ThreadInfo.getThreadInfo:(Lcom/sun/jdi/ThreadReference;)Lcom/sun/tools/example/debug/tty/ThreadInfo;
            astore 1 /* tinfo */
        start local 1 // com.sun.tools.example.debug.tty.ThreadInfo tinfo
         4: .line 136
            aload 1 /* tinfo */
            invokestatic com.sun.tools.example.debug.tty.ThreadInfo.setCurrentThreadInfo:(Lcom/sun/tools/example/debug/tty/ThreadInfo;)V
        end local 1 // com.sun.tools.example.debug.tty.ThreadInfo tinfo
         5: .line 138
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.jdi.ThreadReference tr
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0     tr  Lcom/sun/jdi/ThreadReference;
            4    5     1  tinfo  Lcom/sun/tools/example/debug/tty/ThreadInfo;
    MethodParameters:
      Name  Flags
      tr    

  static void setCurrentThreadInfo(com.sun.tools.example.debug.tty.ThreadInfo);
    descriptor: (Lcom/sun/tools/example/debug/tty/ThreadInfo;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.tools.example.debug.tty.ThreadInfo tinfo
         0: .line 141
            aload 0 /* tinfo */
            putstatic com.sun.tools.example.debug.tty.ThreadInfo.current:Lcom/sun/tools/example/debug/tty/ThreadInfo;
         1: .line 142
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.current:Lcom/sun/tools/example/debug/tty/ThreadInfo;
            ifnull 3
         2: .line 143
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.current:Lcom/sun/tools/example/debug/tty/ThreadInfo;
            invokevirtual com.sun.tools.example.debug.tty.ThreadInfo.invalidate:()V
         3: .line 145
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.tools.example.debug.tty.ThreadInfo tinfo
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0  tinfo  Lcom/sun/tools/example/debug/tty/ThreadInfo;
    MethodParameters:
       Name  Flags
      tinfo  

  static com.sun.tools.example.debug.tty.ThreadInfo getCurrentThreadInfo();
    descriptor: ()Lcom/sun/tools/example/debug/tty/ThreadInfo;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 153
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.current:Lcom/sun/tools/example/debug/tty/ThreadInfo;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  com.sun.jdi.ThreadReference getThread();
    descriptor: ()Lcom/sun/jdi/ThreadReference;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
         0: .line 162
            aload 0 /* this */
            getfield com.sun.tools.example.debug.tty.ThreadInfo.thread:Lcom/sun/jdi/ThreadReference;
            areturn
        end local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/example/debug/tty/ThreadInfo;

  static com.sun.jdi.ThreadGroupReference group();
    descriptor: ()Lcom/sun/jdi/ThreadGroupReference;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 166
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.group:Lcom/sun/jdi/ThreadGroupReference;
            ifnonnull 2
         1: .line 169
            invokestatic com.sun.tools.example.debug.tty.Env.vm:()Lcom/sun/jdi/VirtualMachine;
            invokeinterface com.sun.jdi.VirtualMachine.topLevelThreadGroups:()Ljava/util/List;
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.sun.jdi.ThreadGroupReference
            invokestatic com.sun.tools.example.debug.tty.ThreadInfo.setThreadGroup:(Lcom/sun/jdi/ThreadGroupReference;)V
         2: .line 171
      StackMap locals:
      StackMap stack:
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.group:Lcom/sun/jdi/ThreadGroupReference;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static com.sun.tools.example.debug.tty.ThreadInfo getThreadInfo(long);
    descriptor: (J)Lcom/sun/tools/example/debug/tty/ThreadInfo;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // long id
         0: .line 175
            aconst_null
            astore 2 /* retInfo */
        start local 2 // com.sun.tools.example.debug.tty.ThreadInfo retInfo
         1: .line 177
            getstatic com.sun.tools.example.debug.tty.ThreadInfo.threads:Ljava/util/List;
            dup
            astore 3
            monitorenter
         2: .line 178
            invokestatic com.sun.tools.example.debug.tty.ThreadInfo.threads:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 7
      StackMap locals: long com.sun.tools.example.debug.tty.ThreadInfo java.util.List top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.sun.tools.example.debug.tty.ThreadInfo
            astore 4 /* ti */
        start local 4 // com.sun.tools.example.debug.tty.ThreadInfo ti
         4: .line 179
            aload 4 /* ti */
            getfield com.sun.tools.example.debug.tty.ThreadInfo.thread:Lcom/sun/jdi/ThreadReference;
            invokeinterface com.sun.jdi.ThreadReference.uniqueID:()J
            lload 0 /* id */
            lcmp
            ifne 7
         5: .line 180
            aload 4 /* ti */
            astore 2 /* retInfo */
         6: .line 181
            goto 8
        end local 4 // com.sun.tools.example.debug.tty.ThreadInfo ti
         7: .line 178
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         8: .line 177
      StackMap locals: long com.sun.tools.example.debug.tty.ThreadInfo java.util.List
      StackMap stack:
            aload 3
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 3
            monitorexit
        11: athrow
        12: .line 185
      StackMap locals:
      StackMap stack:
            aload 2 /* retInfo */
            areturn
        end local 2 // com.sun.tools.example.debug.tty.ThreadInfo retInfo
        end local 0 // long id
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0       id  J
            1   13     2  retInfo  Lcom/sun/tools/example/debug/tty/ThreadInfo;
            4    7     4       ti  Lcom/sun/tools/example/debug/tty/ThreadInfo;
      Exception table:
        from    to  target  type
           2     9      10  any
          10    11      10  any
    MethodParameters:
      Name  Flags
      id    

  static com.sun.tools.example.debug.tty.ThreadInfo getThreadInfo(com.sun.jdi.ThreadReference);
    descriptor: (Lcom/sun/jdi/ThreadReference;)Lcom/sun/tools/example/debug/tty/ThreadInfo;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.jdi.ThreadReference tr
         0: .line 189
            aload 0 /* tr */
            invokeinterface com.sun.jdi.ThreadReference.uniqueID:()J
            invokestatic com.sun.tools.example.debug.tty.ThreadInfo.getThreadInfo:(J)Lcom/sun/tools/example/debug/tty/ThreadInfo;
            areturn
        end local 0 // com.sun.jdi.ThreadReference tr
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    tr  Lcom/sun/jdi/ThreadReference;
    MethodParameters:
      Name  Flags
      tr    

  static com.sun.tools.example.debug.tty.ThreadInfo getThreadInfo(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/sun/tools/example/debug/tty/ThreadInfo;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // java.lang.String idToken
         0: .line 193
            aconst_null
            astore 1 /* tinfo */
        start local 1 // com.sun.tools.example.debug.tty.ThreadInfo tinfo
         1: .line 194
            aload 0 /* idToken */
            ldc "t@"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 195
            aload 0 /* idToken */
            iconst_2
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 0 /* idToken */
         3: .line 198
      StackMap locals: com.sun.tools.example.debug.tty.ThreadInfo
      StackMap stack:
            aload 0 /* idToken */
            invokestatic java.lang.Long.decode:(Ljava/lang/String;)Ljava/lang/Long;
            invokevirtual java.lang.Long.longValue:()J
            lstore 2 /* threadId */
        start local 2 // long threadId
         4: .line 199
            lload 2 /* threadId */
            invokestatic com.sun.tools.example.debug.tty.ThreadInfo.getThreadInfo:(J)Lcom/sun/tools/example/debug/tty/ThreadInfo;
            astore 1 /* tinfo */
        end local 2 // long threadId
         5: .line 200
            goto 8
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
         6: pop
         7: .line 201
            aconst_null
            astore 1 /* tinfo */
         8: .line 203
      StackMap locals:
      StackMap stack:
            aload 1 /* tinfo */
            areturn
        end local 1 // com.sun.tools.example.debug.tty.ThreadInfo tinfo
        end local 0 // java.lang.String idToken
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0   idToken  Ljava/lang/String;
            1    9     1     tinfo  Lcom/sun/tools/example/debug/tty/ThreadInfo;
            4    5     2  threadId  J
      Exception table:
        from    to  target  type
           3     5       6  Class java.lang.NumberFormatException
    MethodParameters:
         Name  Flags
      idToken  

  java.util.List<com.sun.jdi.StackFrame> getStack();
    descriptor: ()Ljava/util/List;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
         0: .line 212
            aload 0 /* this */
            getfield com.sun.tools.example.debug.tty.ThreadInfo.thread:Lcom/sun/jdi/ThreadReference;
            invokeinterface com.sun.jdi.ThreadReference.frames:()Ljava/util/List;
            areturn
        end local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/example/debug/tty/ThreadInfo;
    Exceptions:
      throws com.sun.jdi.IncompatibleThreadStateException
    Signature: ()Ljava/util/List<Lcom/sun/jdi/StackFrame;>;

  com.sun.jdi.StackFrame getCurrentFrame();
    descriptor: ()Lcom/sun/jdi/StackFrame;
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
         0: .line 221
            aload 0 /* this */
            getfield com.sun.tools.example.debug.tty.ThreadInfo.thread:Lcom/sun/jdi/ThreadReference;
            invokeinterface com.sun.jdi.ThreadReference.frameCount:()I
            ifne 2
         1: .line 222
            aconst_null
            areturn
         2: .line 224
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.example.debug.tty.ThreadInfo.thread:Lcom/sun/jdi/ThreadReference;
            aload 0 /* this */
            getfield com.sun.tools.example.debug.tty.ThreadInfo.currentFrameIndex:I
            invokeinterface com.sun.jdi.ThreadReference.frame:(I)Lcom/sun/jdi/StackFrame;
            areturn
        end local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/tools/example/debug/tty/ThreadInfo;
    Exceptions:
      throws com.sun.jdi.IncompatibleThreadStateException

  void invalidate();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
         0: .line 231
            aload 0 /* this */
            iconst_0
            putfield com.sun.tools.example.debug.tty.ThreadInfo.currentFrameIndex:I
         1: .line 232
            return
        end local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/tools/example/debug/tty/ThreadInfo;

  private void assureSuspended();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
         0: .line 236
            aload 0 /* this */
            getfield com.sun.tools.example.debug.tty.ThreadInfo.thread:Lcom/sun/jdi/ThreadReference;
            invokeinterface com.sun.jdi.ThreadReference.isSuspended:()Z
            ifne 2
         1: .line 237
            new com.sun.jdi.IncompatibleThreadStateException
            dup
            invokespecial com.sun.jdi.IncompatibleThreadStateException.<init>:()V
            athrow
         2: .line 239
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/tools/example/debug/tty/ThreadInfo;
    Exceptions:
      throws com.sun.jdi.IncompatibleThreadStateException

  int getCurrentFrameIndex();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
         0: .line 248
            aload 0 /* this */
            getfield com.sun.tools.example.debug.tty.ThreadInfo.currentFrameIndex:I
            ireturn
        end local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/example/debug/tty/ThreadInfo;

  void setCurrentFrameIndex(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
        start local 1 // int nFrame
         0: .line 262
            aload 0 /* this */
            invokevirtual com.sun.tools.example.debug.tty.ThreadInfo.assureSuspended:()V
         1: .line 263
            iload 1 /* nFrame */
            iflt 2
            iload 1 /* nFrame */
            aload 0 /* this */
            getfield com.sun.tools.example.debug.tty.ThreadInfo.thread:Lcom/sun/jdi/ThreadReference;
            invokeinterface com.sun.jdi.ThreadReference.frameCount:()I
            if_icmplt 3
         2: .line 264
      StackMap locals:
      StackMap stack:
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:()V
            athrow
         3: .line 266
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* nFrame */
            putfield com.sun.tools.example.debug.tty.ThreadInfo.currentFrameIndex:I
         4: .line 267
            return
        end local 1 // int nFrame
        end local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/sun/tools/example/debug/tty/ThreadInfo;
            0    5     1  nFrame  I
    Exceptions:
      throws com.sun.jdi.IncompatibleThreadStateException
    MethodParameters:
        Name  Flags
      nFrame  

  void up(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
        start local 1 // int nFrames
         0: .line 280
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.tools.example.debug.tty.ThreadInfo.currentFrameIndex:I
            iload 1 /* nFrames */
            iadd
            invokevirtual com.sun.tools.example.debug.tty.ThreadInfo.setCurrentFrameIndex:(I)V
         1: .line 281
            return
        end local 1 // int nFrames
        end local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/sun/tools/example/debug/tty/ThreadInfo;
            0    2     1  nFrames  I
    Exceptions:
      throws com.sun.jdi.IncompatibleThreadStateException
    MethodParameters:
         Name  Flags
      nFrames  

  void down(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
        start local 1 // int nFrames
         0: .line 293
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.tools.example.debug.tty.ThreadInfo.currentFrameIndex:I
            iload 1 /* nFrames */
            isub
            invokevirtual com.sun.tools.example.debug.tty.ThreadInfo.setCurrentFrameIndex:(I)V
         1: .line 294
            return
        end local 1 // int nFrames
        end local 0 // com.sun.tools.example.debug.tty.ThreadInfo this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/sun/tools/example/debug/tty/ThreadInfo;
            0    2     1  nFrames  I
    Exceptions:
      throws com.sun.jdi.IncompatibleThreadStateException
    MethodParameters:
         Name  Flags
      nFrames  
}
SourceFile: "ThreadInfo.java"