class com.sun.tools.jdi.VMState
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.sun.tools.jdi.VMState
  super_class: java.lang.Object
{
  private final com.sun.tools.jdi.VirtualMachineImpl vm;
    descriptor: Lcom/sun/tools/jdi/VirtualMachineImpl;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.List<java.lang.ref.WeakReference<com.sun.tools.jdi.VMListener>> listeners;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljava/lang/ref/WeakReference<Lcom/sun/tools/jdi/VMListener;>;>;

  private boolean notifyingListeners;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private final java.util.Set<java.lang.Integer> pendingResumeCommands;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/Integer;>;

  private com.sun.tools.jdi.VMState$Cache cache;
    descriptor: Lcom/sun/tools/jdi/VMState$Cache;
    flags: (0x0002) ACC_PRIVATE

  private static final com.sun.tools.jdi.VMState$Cache markerCache;
    descriptor: Lcom/sun/tools/jdi/VMState$Cache;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 56
            new com.sun.tools.jdi.VMState$Cache
            dup
            invokespecial com.sun.tools.jdi.VMState$Cache.<init>:()V
            putstatic com.sun.tools.jdi.VMState.markerCache:Lcom/sun/tools/jdi/VMState$Cache;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void disableCache();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.tools.jdi.VMState this
         0: .line 59
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         1: .line 60
            aload 0 /* this */
            aconst_null
            putfield com.sun.tools.jdi.VMState.cache:Lcom/sun/tools/jdi/VMState$Cache;
         2: .line 59
            aload 1
            monitorexit
         3: goto 6
      StackMap locals: com.sun.tools.jdi.VMState com.sun.tools.jdi.VMState
      StackMap stack: java.lang.Throwable
         4: aload 1
            monitorexit
         5: athrow
         6: .line 62
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/sun/tools/jdi/VMState;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any

  private void enableCache();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.tools.jdi.VMState this
         0: .line 65
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         1: .line 66
            aload 0 /* this */
            getstatic com.sun.tools.jdi.VMState.markerCache:Lcom/sun/tools/jdi/VMState$Cache;
            putfield com.sun.tools.jdi.VMState.cache:Lcom/sun/tools/jdi/VMState$Cache;
         2: .line 65
            aload 1
            monitorexit
         3: goto 6
      StackMap locals: com.sun.tools.jdi.VMState com.sun.tools.jdi.VMState
      StackMap stack: java.lang.Throwable
         4: aload 1
            monitorexit
         5: athrow
         6: .line 68
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/sun/tools/jdi/VMState;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any

  private com.sun.tools.jdi.VMState$Cache getCache();
    descriptor: ()Lcom/sun/tools/jdi/VMState$Cache;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.sun.tools.jdi.VMState this
         0: .line 71
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         1: .line 72
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.cache:Lcom/sun/tools/jdi/VMState$Cache;
            getstatic com.sun.tools.jdi.VMState.markerCache:Lcom/sun/tools/jdi/VMState$Cache;
            if_acmpne 3
         2: .line 73
            aload 0 /* this */
            new com.sun.tools.jdi.VMState$Cache
            dup
            invokespecial com.sun.tools.jdi.VMState$Cache.<init>:()V
            putfield com.sun.tools.jdi.VMState.cache:Lcom/sun/tools/jdi/VMState$Cache;
         3: .line 75
      StackMap locals: com.sun.tools.jdi.VMState
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.cache:Lcom/sun/tools/jdi/VMState$Cache;
            aload 1
            monitorexit
         4: areturn
         5: .line 71
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         6: athrow
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/sun/tools/jdi/VMState;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any

  void <init>(com.sun.tools.jdi.VirtualMachineImpl);
    descriptor: (Lcom/sun/tools/jdi/VirtualMachineImpl;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.tools.jdi.VMState this
        start local 1 // com.sun.tools.jdi.VirtualMachineImpl vm
         0: .line 79
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 39
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.sun.tools.jdi.VMState.listeners:Ljava/util/List;
         2: .line 40
            aload 0 /* this */
            iconst_0
            putfield com.sun.tools.jdi.VMState.notifyingListeners:Z
         3: .line 47
            aload 0 /* this */
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            invokestatic java.util.Collections.synchronizedSet:(Ljava/util/Set;)Ljava/util/Set;
            putfield com.sun.tools.jdi.VMState.pendingResumeCommands:Ljava/util/Set;
         4: .line 55
            aload 0 /* this */
            aconst_null
            putfield com.sun.tools.jdi.VMState.cache:Lcom/sun/tools/jdi/VMState$Cache;
         5: .line 80
            aload 0 /* this */
            aload 1 /* vm */
            putfield com.sun.tools.jdi.VMState.vm:Lcom/sun/tools/jdi/VirtualMachineImpl;
         6: .line 81
            return
        end local 1 // com.sun.tools.jdi.VirtualMachineImpl vm
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/sun/tools/jdi/VMState;
            0    7     1    vm  Lcom/sun/tools/jdi/VirtualMachineImpl;
    MethodParameters:
      Name  Flags
      vm    

  boolean isSuspended();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.tools.jdi.VMState this
         0: .line 88
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.cache:Lcom/sun/tools/jdi/VMState$Cache;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/tools/jdi/VMState;

  void notifyCommandComplete(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.tools.jdi.VMState this
        start local 1 // int id
         0: .line 96
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.pendingResumeCommands:Ljava/util/Set;
            iload 1 /* id */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         1: .line 97
            return
        end local 1 // int id
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/tools/jdi/VMState;
            0    2     1    id  I
    MethodParameters:
      Name  Flags
      id    

  synchronized void freeze();
    descriptor: ()V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.sun.tools.jdi.VMState this
         0: .line 100
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.cache:Lcom/sun/tools/jdi/VMState$Cache;
            ifnonnull 3
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.pendingResumeCommands:Ljava/util/Set;
            invokeinterface java.util.Set.isEmpty:()Z
            ifeq 3
         1: .line 106
            aload 0 /* this */
            new com.sun.tools.jdi.VMAction
            dup
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.vm:Lcom/sun/tools/jdi/VirtualMachineImpl;
            iconst_1
            invokespecial com.sun.tools.jdi.VMAction.<init>:(Lcom/sun/jdi/VirtualMachine;I)V
            invokevirtual com.sun.tools.jdi.VMState.processVMAction:(Lcom/sun/tools/jdi/VMAction;)V
         2: .line 107
            aload 0 /* this */
            invokevirtual com.sun.tools.jdi.VMState.enableCache:()V
         3: .line 109
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/sun/tools/jdi/VMState;

  synchronized com.sun.tools.jdi.PacketStream thawCommand(com.sun.tools.jdi.CommandSender);
    descriptor: (Lcom/sun/tools/jdi/CommandSender;)Lcom/sun/tools/jdi/PacketStream;
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.sun.tools.jdi.VMState this
        start local 1 // com.sun.tools.jdi.CommandSender sender
         0: .line 112
            aload 1 /* sender */
            invokeinterface com.sun.tools.jdi.CommandSender.send:()Lcom/sun/tools/jdi/PacketStream;
            astore 2 /* stream */
        start local 2 // com.sun.tools.jdi.PacketStream stream
         1: .line 113
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.pendingResumeCommands:Ljava/util/Set;
            aload 2 /* stream */
            invokevirtual com.sun.tools.jdi.PacketStream.id:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         2: .line 114
            aload 0 /* this */
            invokevirtual com.sun.tools.jdi.VMState.thaw:()V
         3: .line 115
            aload 2 /* stream */
            areturn
        end local 2 // com.sun.tools.jdi.PacketStream stream
        end local 1 // com.sun.tools.jdi.CommandSender sender
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/sun/tools/jdi/VMState;
            0    4     1  sender  Lcom/sun/tools/jdi/CommandSender;
            1    4     2  stream  Lcom/sun/tools/jdi/PacketStream;
    MethodParameters:
        Name  Flags
      sender  

  void thaw();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.tools.jdi.VMState this
         0: .line 122
            aload 0 /* this */
            aconst_null
            invokevirtual com.sun.tools.jdi.VMState.thaw:(Lcom/sun/jdi/ThreadReference;)V
         1: .line 123
            return
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/tools/jdi/VMState;

  synchronized void thaw(com.sun.jdi.ThreadReference);
    descriptor: (Lcom/sun/jdi/ThreadReference;)V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // com.sun.tools.jdi.VMState this
        start local 1 // com.sun.jdi.ThreadReference resumingThread
         0: .line 131
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.cache:Lcom/sun/tools/jdi/VMState$Cache;
            ifnull 4
         1: .line 132
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.vm:Lcom/sun/tools/jdi/VirtualMachineImpl;
            getfield com.sun.tools.jdi.VirtualMachineImpl.traceFlags:I
            bipush 16
            iand
            ifeq 3
         2: .line 133
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.vm:Lcom/sun/tools/jdi/VirtualMachineImpl;
            ldc "Clearing VM suspended cache"
            invokevirtual com.sun.tools.jdi.VirtualMachineImpl.printTrace:(Ljava/lang/String;)V
         3: .line 135
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.tools.jdi.VMState.disableCache:()V
         4: .line 137
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.sun.tools.jdi.VMAction
            dup
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.vm:Lcom/sun/tools/jdi/VirtualMachineImpl;
            aload 1 /* resumingThread */
            iconst_2
            invokespecial com.sun.tools.jdi.VMAction.<init>:(Lcom/sun/jdi/VirtualMachine;Lcom/sun/jdi/ThreadReference;I)V
            invokevirtual com.sun.tools.jdi.VMState.processVMAction:(Lcom/sun/tools/jdi/VMAction;)V
         5: .line 138
            return
        end local 1 // com.sun.jdi.ThreadReference resumingThread
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    6     0            this  Lcom/sun/tools/jdi/VMState;
            0    6     1  resumingThread  Lcom/sun/jdi/ThreadReference;
    MethodParameters:
                Name  Flags
      resumingThread  

  private synchronized void processVMAction(com.sun.tools.jdi.VMAction);
    descriptor: (Lcom/sun/tools/jdi/VMAction;)V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // com.sun.tools.jdi.VMState this
        start local 1 // com.sun.tools.jdi.VMAction action
         0: .line 141
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.notifyingListeners:Z
            ifne 18
         1: .line 143
            aload 0 /* this */
            iconst_1
            putfield com.sun.tools.jdi.VMState.notifyingListeners:Z
         2: .line 145
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.listeners:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2 /* iter */
        start local 2 // java.util.Iterator iter
         3: .line 146
            goto 16
         4: .line 147
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 2 /* iter */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.ref.WeakReference
            astore 3 /* ref */
        start local 3 // java.lang.ref.WeakReference ref
         5: .line 148
            aload 3 /* ref */
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            checkcast com.sun.tools.jdi.VMListener
            astore 4 /* listener */
        start local 4 // com.sun.tools.jdi.VMListener listener
         6: .line 149
            aload 4 /* listener */
            ifnull 15
         7: .line 150
            iconst_1
            istore 5 /* keep */
        start local 5 // boolean keep
         8: .line 151
            aload 1 /* action */
            invokevirtual com.sun.tools.jdi.VMAction.id:()I
            tableswitch { // 1 - 2
                    1: 9
                    2: 11
              default: 12
          }
         9: .line 153
      StackMap locals: java.lang.ref.WeakReference com.sun.tools.jdi.VMListener int
      StackMap stack:
            aload 4 /* listener */
            aload 1 /* action */
            invokeinterface com.sun.tools.jdi.VMListener.vmSuspended:(Lcom/sun/tools/jdi/VMAction;)Z
            istore 5 /* keep */
        10: .line 154
            goto 12
        11: .line 156
      StackMap locals:
      StackMap stack:
            aload 4 /* listener */
            aload 1 /* action */
            invokeinterface com.sun.tools.jdi.VMListener.vmNotSuspended:(Lcom/sun/tools/jdi/VMAction;)Z
            istore 5 /* keep */
        12: .line 159
      StackMap locals:
      StackMap stack:
            iload 5 /* keep */
            ifne 16
        13: .line 160
            aload 2 /* iter */
            invokeinterface java.util.Iterator.remove:()V
        end local 5 // boolean keep
        14: .line 162
            goto 16
        15: .line 164
      StackMap locals:
      StackMap stack:
            aload 2 /* iter */
            invokeinterface java.util.Iterator.remove:()V
        end local 4 // com.sun.tools.jdi.VMListener listener
        end local 3 // java.lang.ref.WeakReference ref
        16: .line 146
      StackMap locals:
      StackMap stack:
            aload 2 /* iter */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        17: .line 168
            aload 0 /* this */
            iconst_0
            putfield com.sun.tools.jdi.VMState.notifyingListeners:Z
        end local 2 // java.util.Iterator iter
        18: .line 170
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.sun.tools.jdi.VMAction action
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   19     0      this  Lcom/sun/tools/jdi/VMState;
            0   19     1    action  Lcom/sun/tools/jdi/VMAction;
            3   18     2      iter  Ljava/util/Iterator<Ljava/lang/ref/WeakReference<Lcom/sun/tools/jdi/VMListener;>;>;
            5   16     3       ref  Ljava/lang/ref/WeakReference<Lcom/sun/tools/jdi/VMListener;>;
            6   16     4  listener  Lcom/sun/tools/jdi/VMListener;
            8   14     5      keep  Z
    MethodParameters:
        Name  Flags
      action  

  synchronized void addListener(com.sun.tools.jdi.VMListener);
    descriptor: (Lcom/sun/tools/jdi/VMListener;)V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.sun.tools.jdi.VMState this
        start local 1 // com.sun.tools.jdi.VMListener listener
         0: .line 173
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.listeners:Ljava/util/List;
            new java.lang.ref.WeakReference
            dup
            aload 1 /* listener */
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 174
            return
        end local 1 // com.sun.tools.jdi.VMListener listener
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/sun/tools/jdi/VMState;
            0    2     1  listener  Lcom/sun/tools/jdi/VMListener;
    MethodParameters:
          Name  Flags
      listener  

  synchronized boolean hasListener(com.sun.tools.jdi.VMListener);
    descriptor: (Lcom/sun/tools/jdi/VMListener;)Z
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.sun.tools.jdi.VMState this
        start local 1 // com.sun.tools.jdi.VMListener listener
         0: .line 177
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.listeners:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2 /* iter */
        start local 2 // java.util.Iterator iter
         1: .line 178
            goto 5
         2: .line 179
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 2 /* iter */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.ref.WeakReference
            astore 3 /* ref */
        start local 3 // java.lang.ref.WeakReference ref
         3: .line 180
            aload 1 /* listener */
            aload 3 /* ref */
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 181
            iconst_1
            ireturn
        end local 3 // java.lang.ref.WeakReference ref
         5: .line 178
      StackMap locals:
      StackMap stack:
            aload 2 /* iter */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 184
            iconst_0
            ireturn
        end local 2 // java.util.Iterator iter
        end local 1 // com.sun.tools.jdi.VMListener listener
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lcom/sun/tools/jdi/VMState;
            0    7     1  listener  Lcom/sun/tools/jdi/VMListener;
            1    7     2      iter  Ljava/util/Iterator<Ljava/lang/ref/WeakReference<Lcom/sun/tools/jdi/VMListener;>;>;
            3    5     3       ref  Ljava/lang/ref/WeakReference<Lcom/sun/tools/jdi/VMListener;>;
    MethodParameters:
          Name  Flags
      listener  

  synchronized void removeListener(com.sun.tools.jdi.VMListener);
    descriptor: (Lcom/sun/tools/jdi/VMListener;)V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.sun.tools.jdi.VMState this
        start local 1 // com.sun.tools.jdi.VMListener listener
         0: .line 188
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.listeners:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2 /* iter */
        start local 2 // java.util.Iterator iter
         1: .line 189
            goto 6
         2: .line 190
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 2 /* iter */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.ref.WeakReference
            astore 3 /* ref */
        start local 3 // java.lang.ref.WeakReference ref
         3: .line 191
            aload 1 /* listener */
            aload 3 /* ref */
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 6
         4: .line 192
            aload 2 /* iter */
            invokeinterface java.util.Iterator.remove:()V
         5: .line 193
            goto 7
        end local 3 // java.lang.ref.WeakReference ref
         6: .line 189
      StackMap locals:
      StackMap stack:
            aload 2 /* iter */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         7: .line 196
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.util.Iterator iter
        end local 1 // com.sun.tools.jdi.VMListener listener
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lcom/sun/tools/jdi/VMState;
            0    8     1  listener  Lcom/sun/tools/jdi/VMListener;
            1    8     2      iter  Ljava/util/Iterator<Ljava/lang/ref/WeakReference<Lcom/sun/tools/jdi/VMListener;>;>;
            3    6     3       ref  Ljava/lang/ref/WeakReference<Lcom/sun/tools/jdi/VMListener;>;
    MethodParameters:
          Name  Flags
      listener  

  java.util.List<com.sun.jdi.ThreadReference> allThreads();
    descriptor: ()Ljava/util/List;
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.sun.tools.jdi.VMState this
         0: .line 199
            aconst_null
            astore 1 /* threads */
        start local 1 // java.util.List threads
         1: .line 201
            aload 0 /* this */
            invokevirtual com.sun.tools.jdi.VMState.getCache:()Lcom/sun/tools/jdi/VMState$Cache;
            astore 2 /* local */
        start local 2 // com.sun.tools.jdi.VMState$Cache local
         2: .line 203
            aload 2 /* local */
            ifnull 4
         3: .line 205
            aload 2 /* local */
            getfield com.sun.tools.jdi.VMState$Cache.threads:Ljava/util/List;
            astore 1 /* threads */
         4: .line 207
      StackMap locals: java.util.List com.sun.tools.jdi.VMState$Cache
      StackMap stack:
            aload 1 /* threads */
            ifnonnull 16
         5: .line 209
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.vm:Lcom/sun/tools/jdi/VirtualMachineImpl;
            invokestatic com.sun.tools.jdi.JDWP$VirtualMachine$AllThreads.process:(Lcom/sun/tools/jdi/VirtualMachineImpl;)Lcom/sun/tools/jdi/JDWP$VirtualMachine$AllThreads;
            getfield com.sun.tools.jdi.JDWP$VirtualMachine$AllThreads.threads:[Lcom/sun/tools/jdi/ThreadReferenceImpl;
         6: .line 208
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            astore 1 /* threads */
         7: .line 210
            aload 2 /* local */
            ifnull 16
         8: .line 211
            aload 2 /* local */
            aload 1 /* threads */
            putfield com.sun.tools.jdi.VMState$Cache.threads:Ljava/util/List;
         9: .line 212
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.vm:Lcom/sun/tools/jdi/VirtualMachineImpl;
            getfield com.sun.tools.jdi.VirtualMachineImpl.traceFlags:I
            bipush 16
            iand
            ifeq 16
        10: .line 213
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.vm:Lcom/sun/tools/jdi/VirtualMachineImpl;
            new java.lang.StringBuilder
            dup
            ldc "Caching all threads (count = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        11: .line 214
            aload 1 /* threads */
            invokeinterface java.util.List.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ") while VM suspended"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        12: .line 213
            invokevirtual com.sun.tools.jdi.VirtualMachineImpl.printTrace:(Ljava/lang/String;)V
        end local 2 // com.sun.tools.jdi.VMState$Cache local
        13: .line 218
            goto 16
      StackMap locals: com.sun.tools.jdi.VMState java.util.List
      StackMap stack: com.sun.tools.jdi.JDWPException
        14: astore 2 /* exc */
        start local 2 // com.sun.tools.jdi.JDWPException exc
        15: .line 219
            aload 2 /* exc */
            invokevirtual com.sun.tools.jdi.JDWPException.toJDIException:()Ljava/lang/RuntimeException;
            athrow
        end local 2 // com.sun.tools.jdi.JDWPException exc
        16: .line 221
      StackMap locals:
      StackMap stack:
            aload 1 /* threads */
            areturn
        end local 1 // java.util.List threads
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   17     0     this  Lcom/sun/tools/jdi/VMState;
            1   17     1  threads  Ljava/util/List<Lcom/sun/jdi/ThreadReference;>;
            2   13     2    local  Lcom/sun/tools/jdi/VMState$Cache;
           15   16     2      exc  Lcom/sun/tools/jdi/JDWPException;
      Exception table:
        from    to  target  type
           1    13      14  Class com.sun.tools.jdi.JDWPException
    Signature: ()Ljava/util/List<Lcom/sun/jdi/ThreadReference;>;

  java.util.List<com.sun.jdi.ThreadGroupReference> topLevelThreadGroups();
    descriptor: ()Ljava/util/List;
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.sun.tools.jdi.VMState this
         0: .line 226
            aconst_null
            astore 1 /* groups */
        start local 1 // java.util.List groups
         1: .line 228
            aload 0 /* this */
            invokevirtual com.sun.tools.jdi.VMState.getCache:()Lcom/sun/tools/jdi/VMState$Cache;
            astore 2 /* local */
        start local 2 // com.sun.tools.jdi.VMState$Cache local
         2: .line 230
            aload 2 /* local */
            ifnull 4
         3: .line 231
            aload 2 /* local */
            getfield com.sun.tools.jdi.VMState$Cache.groups:Ljava/util/List;
            astore 1 /* groups */
         4: .line 233
      StackMap locals: java.util.List com.sun.tools.jdi.VMState$Cache
      StackMap stack:
            aload 1 /* groups */
            ifnonnull 18
         5: .line 236
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.vm:Lcom/sun/tools/jdi/VirtualMachineImpl;
            invokestatic com.sun.tools.jdi.JDWP$VirtualMachine$TopLevelThreadGroups.process:(Lcom/sun/tools/jdi/VirtualMachineImpl;)Lcom/sun/tools/jdi/JDWP$VirtualMachine$TopLevelThreadGroups;
            getfield com.sun.tools.jdi.JDWP$VirtualMachine$TopLevelThreadGroups.groups:[Lcom/sun/tools/jdi/ThreadGroupReferenceImpl;
         6: .line 234
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            astore 1 /* groups */
         7: .line 237
            aload 2 /* local */
            ifnull 18
         8: .line 238
            aload 2 /* local */
            aload 1 /* groups */
            putfield com.sun.tools.jdi.VMState$Cache.groups:Ljava/util/List;
         9: .line 239
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.vm:Lcom/sun/tools/jdi/VirtualMachineImpl;
            getfield com.sun.tools.jdi.VirtualMachineImpl.traceFlags:I
            bipush 16
            iand
            ifeq 18
        10: .line 240
            aload 0 /* this */
            getfield com.sun.tools.jdi.VMState.vm:Lcom/sun/tools/jdi/VirtualMachineImpl;
        11: .line 241
            new java.lang.StringBuilder
            dup
            ldc "Caching top level thread groups (count = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        12: .line 242
            aload 1 /* groups */
            invokeinterface java.util.List.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ") while VM suspended"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        13: .line 241
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        14: .line 240
            invokevirtual com.sun.tools.jdi.VirtualMachineImpl.printTrace:(Ljava/lang/String;)V
        end local 2 // com.sun.tools.jdi.VMState$Cache local
        15: .line 246
            goto 18
      StackMap locals: com.sun.tools.jdi.VMState java.util.List
      StackMap stack: com.sun.tools.jdi.JDWPException
        16: astore 2 /* exc */
        start local 2 // com.sun.tools.jdi.JDWPException exc
        17: .line 247
            aload 2 /* exc */
            invokevirtual com.sun.tools.jdi.JDWPException.toJDIException:()Ljava/lang/RuntimeException;
            athrow
        end local 2 // com.sun.tools.jdi.JDWPException exc
        18: .line 249
      StackMap locals:
      StackMap stack:
            aload 1 /* groups */
            areturn
        end local 1 // java.util.List groups
        end local 0 // com.sun.tools.jdi.VMState this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   19     0    this  Lcom/sun/tools/jdi/VMState;
            1   19     1  groups  Ljava/util/List<Lcom/sun/jdi/ThreadGroupReference;>;
            2   15     2   local  Lcom/sun/tools/jdi/VMState$Cache;
           17   18     2     exc  Lcom/sun/tools/jdi/JDWPException;
      Exception table:
        from    to  target  type
           1    15      16  Class com.sun.tools.jdi.JDWPException
    Signature: ()Ljava/util/List<Lcom/sun/jdi/ThreadGroupReference;>;
}
SourceFile: "VMState.java"
NestMembers:
  com.sun.tools.jdi.VMState$Cache
InnerClasses:
  VirtualMachine = com.sun.tools.jdi.JDWP$VirtualMachine of com.sun.tools.jdi.JDWP
  AllThreads = com.sun.tools.jdi.JDWP$VirtualMachine$AllThreads of com.sun.tools.jdi.JDWP$VirtualMachine
  TopLevelThreadGroups = com.sun.tools.jdi.JDWP$VirtualMachine$TopLevelThreadGroups of com.sun.tools.jdi.JDWP$VirtualMachine
  private Cache = com.sun.tools.jdi.VMState$Cache of com.sun.tools.jdi.VMState