public class sun.jvm.hotspot.runtime.Threads
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.jvm.hotspot.runtime.Threads
  super_class: java.lang.Object
{
  private static sun.jvm.hotspot.runtime.JavaThreadFactory threadFactory;
    descriptor: Lsun/jvm/hotspot/runtime/JavaThreadFactory;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static sun.jvm.hotspot.types.AddressField threadListField;
    descriptor: Lsun/jvm/hotspot/types/AddressField;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static sun.jvm.hotspot.types.CIntegerField numOfThreadsField;
    descriptor: Lsun/jvm/hotspot/types/CIntegerField;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static sun.jvm.hotspot.runtime.VirtualConstructor virtualConstructor;
    descriptor: Lsun/jvm/hotspot/runtime/VirtualConstructor;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static sun.jvm.hotspot.runtime.JavaThreadPDAccess access;
    descriptor: Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 53
            new sun.jvm.hotspot.runtime.Threads$1
            dup
            invokespecial sun.jvm.hotspot.runtime.Threads$1.<init>:()V
            invokestatic sun.jvm.hotspot.runtime.VM.registerVMInitializedObserver:(Ljava/util/Observer;)V
         1: .line 58
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static synchronized void initialize(sun.jvm.hotspot.types.TypeDataBase);
    descriptor: (Lsun/jvm/hotspot/types/TypeDataBase;)V
    flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // sun.jvm.hotspot.types.TypeDataBase db
         0: .line 61
            aload 0 /* db */
            ldc "Threads"
            invokeinterface sun.jvm.hotspot.types.TypeDataBase.lookupType:(Ljava/lang/String;)Lsun/jvm/hotspot/types/Type;
            astore 1 /* type */
        start local 1 // sun.jvm.hotspot.types.Type type
         1: .line 63
            aload 1 /* type */
            ldc "_thread_list"
            invokeinterface sun.jvm.hotspot.types.Type.getAddressField:(Ljava/lang/String;)Lsun/jvm/hotspot/types/AddressField;
            putstatic sun.jvm.hotspot.runtime.Threads.threadListField:Lsun/jvm/hotspot/types/AddressField;
         2: .line 64
            aload 1 /* type */
            ldc "_number_of_threads"
            invokeinterface sun.jvm.hotspot.types.Type.getCIntegerField:(Ljava/lang/String;)Lsun/jvm/hotspot/types/CIntegerField;
            putstatic sun.jvm.hotspot.runtime.Threads.numOfThreadsField:Lsun/jvm/hotspot/types/CIntegerField;
         3: .line 67
            invokestatic sun.jvm.hotspot.runtime.VM.getVM:()Lsun/jvm/hotspot/runtime/VM;
            invokevirtual sun.jvm.hotspot.runtime.VM.getOS:()Ljava/lang/String;
            astore 2 /* os */
        start local 2 // java.lang.String os
         4: .line 68
            invokestatic sun.jvm.hotspot.runtime.VM.getVM:()Lsun/jvm/hotspot/runtime/VM;
            invokevirtual sun.jvm.hotspot.runtime.VM.getCPU:()Ljava/lang/String;
            astore 3 /* cpu */
        start local 3 // java.lang.String cpu
         5: .line 70
            aconst_null
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
         6: .line 72
            aload 2 /* os */
            ldc "solaris"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 16
         7: .line 73
            aload 3 /* cpu */
            ldc "sparc"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 10
         8: .line 74
            new sun.jvm.hotspot.runtime.solaris_sparc.SolarisSPARCJavaThreadPDAccess
            dup
            invokespecial sun.jvm.hotspot.runtime.solaris_sparc.SolarisSPARCJavaThreadPDAccess.<init>:()V
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
         9: .line 75
            goto 60
      StackMap locals: sun.jvm.hotspot.types.Type java.lang.String java.lang.String
      StackMap stack:
        10: aload 3 /* cpu */
            ldc "x86"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 13
        11: .line 76
            new sun.jvm.hotspot.runtime.solaris_x86.SolarisX86JavaThreadPDAccess
            dup
            invokespecial sun.jvm.hotspot.runtime.solaris_x86.SolarisX86JavaThreadPDAccess.<init>:()V
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
        12: .line 77
            goto 60
      StackMap locals:
      StackMap stack:
        13: aload 3 /* cpu */
            ldc "amd64"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 60
        14: .line 78
            new sun.jvm.hotspot.runtime.solaris_amd64.SolarisAMD64JavaThreadPDAccess
            dup
            invokespecial sun.jvm.hotspot.runtime.solaris_amd64.SolarisAMD64JavaThreadPDAccess.<init>:()V
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
        15: .line 80
            goto 60
      StackMap locals:
      StackMap stack:
        16: aload 2 /* os */
            ldc "win32"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 23
        17: .line 81
            aload 3 /* cpu */
            ldc "x86"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 20
        18: .line 82
            new sun.jvm.hotspot.runtime.win32_x86.Win32X86JavaThreadPDAccess
            dup
            invokespecial sun.jvm.hotspot.runtime.win32_x86.Win32X86JavaThreadPDAccess.<init>:()V
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
        19: .line 83
            goto 60
      StackMap locals:
      StackMap stack:
        20: aload 3 /* cpu */
            ldc "amd64"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 60
        21: .line 84
            new sun.jvm.hotspot.runtime.win32_amd64.Win32AMD64JavaThreadPDAccess
            dup
            invokespecial sun.jvm.hotspot.runtime.win32_amd64.Win32AMD64JavaThreadPDAccess.<init>:()V
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
        22: .line 86
            goto 60
      StackMap locals:
      StackMap stack:
        23: aload 2 /* os */
            ldc "linux"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 50
        24: .line 87
            aload 3 /* cpu */
            ldc "x86"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 27
        25: .line 88
            new sun.jvm.hotspot.runtime.linux_x86.LinuxX86JavaThreadPDAccess
            dup
            invokespecial sun.jvm.hotspot.runtime.linux_x86.LinuxX86JavaThreadPDAccess.<init>:()V
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
        26: .line 89
            goto 60
      StackMap locals:
      StackMap stack:
        27: aload 3 /* cpu */
            ldc "amd64"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 30
        28: .line 90
            new sun.jvm.hotspot.runtime.linux_amd64.LinuxAMD64JavaThreadPDAccess
            dup
            invokespecial sun.jvm.hotspot.runtime.linux_amd64.LinuxAMD64JavaThreadPDAccess.<init>:()V
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
        29: .line 91
            goto 60
      StackMap locals:
      StackMap stack:
        30: aload 3 /* cpu */
            ldc "sparc"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 33
        31: .line 92
            new sun.jvm.hotspot.runtime.linux_sparc.LinuxSPARCJavaThreadPDAccess
            dup
            invokespecial sun.jvm.hotspot.runtime.linux_sparc.LinuxSPARCJavaThreadPDAccess.<init>:()V
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
        32: .line 93
            goto 60
      StackMap locals:
      StackMap stack:
        33: aload 3 /* cpu */
            ldc "ppc64"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 36
        34: .line 94
            new sun.jvm.hotspot.runtime.linux_ppc64.LinuxPPC64JavaThreadPDAccess
            dup
            invokespecial sun.jvm.hotspot.runtime.linux_ppc64.LinuxPPC64JavaThreadPDAccess.<init>:()V
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
        35: .line 95
            goto 60
      StackMap locals:
      StackMap stack:
        36: aload 3 /* cpu */
            ldc "aarch64"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 39
        37: .line 96
            new sun.jvm.hotspot.runtime.linux_aarch64.LinuxAARCH64JavaThreadPDAccess
            dup
            invokespecial sun.jvm.hotspot.runtime.linux_aarch64.LinuxAARCH64JavaThreadPDAccess.<init>:()V
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
        38: .line 97
            goto 60
        39: .line 100
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "sun.jvm.hotspot.runtime.linux_"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        40: .line 101
            aload 3 /* cpu */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ".Linux"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* cpu */
            invokevirtual java.lang.String.toUpperCase:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        41: .line 102
            ldc "JavaThreadPDAccess"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        42: .line 100
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
        43: .line 102
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            checkcast sun.jvm.hotspot.runtime.JavaThreadPDAccess
        44: .line 99
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
        45: .line 103
            goto 60
      StackMap locals:
      StackMap stack: java.lang.Exception
        46: pop
        47: .line 104
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "OS/CPU combination "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* os */
            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 /* cpu */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        48: .line 105
            ldc " not yet supported"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        49: .line 104
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        50: .line 108
      StackMap locals:
      StackMap stack:
            aload 2 /* os */
            ldc "bsd"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 57
        51: .line 109
            aload 3 /* cpu */
            ldc "x86"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 54
        52: .line 110
            new sun.jvm.hotspot.runtime.bsd_x86.BsdX86JavaThreadPDAccess
            dup
            invokespecial sun.jvm.hotspot.runtime.bsd_x86.BsdX86JavaThreadPDAccess.<init>:()V
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
        53: .line 111
            goto 60
      StackMap locals:
      StackMap stack:
        54: aload 3 /* cpu */
            ldc "amd64"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 55
            aload 3 /* cpu */
            ldc "x86_64"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 60
        55: .line 112
      StackMap locals:
      StackMap stack:
            new sun.jvm.hotspot.runtime.bsd_amd64.BsdAMD64JavaThreadPDAccess
            dup
            invokespecial sun.jvm.hotspot.runtime.bsd_amd64.BsdAMD64JavaThreadPDAccess.<init>:()V
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
        56: .line 114
            goto 60
      StackMap locals:
      StackMap stack:
        57: aload 2 /* os */
            ldc "darwin"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 60
        58: .line 115
            aload 3 /* cpu */
            ldc "amd64"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 59
            aload 3 /* cpu */
            ldc "x86_64"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 60
        59: .line 116
      StackMap locals:
      StackMap stack:
            new sun.jvm.hotspot.runtime.bsd_amd64.BsdAMD64JavaThreadPDAccess
            dup
            invokespecial sun.jvm.hotspot.runtime.bsd_amd64.BsdAMD64JavaThreadPDAccess.<init>:()V
            putstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
        60: .line 120
      StackMap locals:
      StackMap stack:
            getstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
            ifnonnull 64
        61: .line 121
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "OS/CPU combination "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* os */
            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 /* cpu */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        62: .line 122
            ldc " not yet supported"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        63: .line 121
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        64: .line 125
      StackMap locals:
      StackMap stack:
            new sun.jvm.hotspot.runtime.VirtualConstructor
            dup
            aload 0 /* db */
            invokespecial sun.jvm.hotspot.runtime.VirtualConstructor.<init>:(Lsun/jvm/hotspot/types/TypeDataBase;)V
            putstatic sun.jvm.hotspot.runtime.Threads.virtualConstructor:Lsun/jvm/hotspot/runtime/VirtualConstructor;
        65: .line 127
            getstatic sun.jvm.hotspot.runtime.Threads.virtualConstructor:Lsun/jvm/hotspot/runtime/VirtualConstructor;
            ldc "JavaThread"
            ldc Lsun/jvm/hotspot/runtime/JavaThread;
            invokevirtual sun.jvm.hotspot.runtime.VirtualConstructor.addMapping:(Ljava/lang/String;Ljava/lang/Class;)Z
            pop
        66: .line 128
            invokestatic sun.jvm.hotspot.runtime.VM.getVM:()Lsun/jvm/hotspot/runtime/VM;
            invokevirtual sun.jvm.hotspot.runtime.VM.isCore:()Z
            ifne 69
        67: .line 129
            getstatic sun.jvm.hotspot.runtime.Threads.virtualConstructor:Lsun/jvm/hotspot/runtime/VirtualConstructor;
            ldc "CompilerThread"
            ldc Lsun/jvm/hotspot/runtime/CompilerThread;
            invokevirtual sun.jvm.hotspot.runtime.VirtualConstructor.addMapping:(Ljava/lang/String;Ljava/lang/Class;)Z
            pop
        68: .line 130
            getstatic sun.jvm.hotspot.runtime.Threads.virtualConstructor:Lsun/jvm/hotspot/runtime/VirtualConstructor;
            ldc "CodeCacheSweeperThread"
            ldc Lsun/jvm/hotspot/runtime/CodeCacheSweeperThread;
            invokevirtual sun.jvm.hotspot.runtime.VirtualConstructor.addMapping:(Ljava/lang/String;Ljava/lang/Class;)Z
            pop
        69: .line 132
      StackMap locals:
      StackMap stack:
            getstatic sun.jvm.hotspot.runtime.Threads.virtualConstructor:Lsun/jvm/hotspot/runtime/VirtualConstructor;
            ldc "JvmtiAgentThread"
            ldc Lsun/jvm/hotspot/runtime/JvmtiAgentThread;
            invokevirtual sun.jvm.hotspot.runtime.VirtualConstructor.addMapping:(Ljava/lang/String;Ljava/lang/Class;)Z
            pop
        70: .line 133
            getstatic sun.jvm.hotspot.runtime.Threads.virtualConstructor:Lsun/jvm/hotspot/runtime/VirtualConstructor;
            ldc "ServiceThread"
            ldc Lsun/jvm/hotspot/runtime/ServiceThread;
            invokevirtual sun.jvm.hotspot.runtime.VirtualConstructor.addMapping:(Ljava/lang/String;Ljava/lang/Class;)Z
            pop
        71: .line 134
            return
        end local 3 // java.lang.String cpu
        end local 2 // java.lang.String os
        end local 1 // sun.jvm.hotspot.types.Type type
        end local 0 // sun.jvm.hotspot.types.TypeDataBase db
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   72     0    db  Lsun/jvm/hotspot/types/TypeDataBase;
            1   72     1  type  Lsun/jvm/hotspot/types/Type;
            4   72     2    os  Ljava/lang/String;
            5   72     3   cpu  Ljava/lang/String;
      Exception table:
        from    to  target  type
          39    45      46  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      db    

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.jvm.hotspot.runtime.Threads this
         0: .line 136
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 137
            return
        end local 0 // sun.jvm.hotspot.runtime.Threads this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/jvm/hotspot/runtime/Threads;

  public sun.jvm.hotspot.runtime.JavaThread first();
    descriptor: ()Lsun/jvm/hotspot/runtime/JavaThread;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.jvm.hotspot.runtime.Threads this
         0: .line 151
            getstatic sun.jvm.hotspot.runtime.Threads.threadListField:Lsun/jvm/hotspot/types/AddressField;
            invokeinterface sun.jvm.hotspot.types.AddressField.getValue:()Lsun/jvm/hotspot/debugger/Address;
            astore 1 /* threadAddr */
        start local 1 // sun.jvm.hotspot.debugger.Address threadAddr
         1: .line 152
            aload 1 /* threadAddr */
            ifnonnull 3
         2: .line 153
            aconst_null
            areturn
         3: .line 156
      StackMap locals: sun.jvm.hotspot.debugger.Address
      StackMap stack:
            aload 0 /* this */
            aload 1 /* threadAddr */
            invokevirtual sun.jvm.hotspot.runtime.Threads.createJavaThreadWrapper:(Lsun/jvm/hotspot/debugger/Address;)Lsun/jvm/hotspot/runtime/JavaThread;
            areturn
        end local 1 // sun.jvm.hotspot.debugger.Address threadAddr
        end local 0 // sun.jvm.hotspot.runtime.Threads this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lsun/jvm/hotspot/runtime/Threads;
            1    4     1  threadAddr  Lsun/jvm/hotspot/debugger/Address;

  public int getNumberOfThreads();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.jvm.hotspot.runtime.Threads this
         0: .line 160
            getstatic sun.jvm.hotspot.runtime.Threads.numOfThreadsField:Lsun/jvm/hotspot/types/CIntegerField;
            invokeinterface sun.jvm.hotspot.types.CIntegerField.getValue:()J
            l2i
            ireturn
        end local 0 // sun.jvm.hotspot.runtime.Threads this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/jvm/hotspot/runtime/Threads;

  public sun.jvm.hotspot.runtime.JavaThread createJavaThreadWrapper(sun.jvm.hotspot.debugger.Address);
    descriptor: (Lsun/jvm/hotspot/debugger/Address;)Lsun/jvm/hotspot/runtime/JavaThread;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // sun.jvm.hotspot.runtime.Threads this
        start local 1 // sun.jvm.hotspot.debugger.Address threadAddr
         0: .line 168
            getstatic sun.jvm.hotspot.runtime.Threads.virtualConstructor:Lsun/jvm/hotspot/runtime/VirtualConstructor;
            aload 1 /* threadAddr */
            invokevirtual sun.jvm.hotspot.runtime.VirtualConstructor.instantiateWrapperFor:(Lsun/jvm/hotspot/debugger/Address;)Lsun/jvm/hotspot/runtime/VMObject;
            checkcast sun.jvm.hotspot.runtime.JavaThread
            astore 2 /* thread */
        start local 2 // sun.jvm.hotspot.runtime.JavaThread thread
         1: .line 169
            aload 2 /* thread */
            getstatic sun.jvm.hotspot.runtime.Threads.access:Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.setThreadPDAccess:(Lsun/jvm/hotspot/runtime/JavaThreadPDAccess;)V
         2: .line 170
            aload 2 /* thread */
         3: areturn
        end local 2 // sun.jvm.hotspot.runtime.JavaThread thread
         4: .line 171
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
         5: .line 172
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unable to deduce type of thread from address "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* threadAddr */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         6: .line 173
            ldc " (expected type JavaThread, CompilerThread, ServiceThread, JvmtiAgentThread or CodeCacheSweeperThread)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
         7: .line 172
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Exception e
        end local 1 // sun.jvm.hotspot.debugger.Address threadAddr
        end local 0 // sun.jvm.hotspot.runtime.Threads this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lsun/jvm/hotspot/runtime/Threads;
            0    8     1  threadAddr  Lsun/jvm/hotspot/debugger/Address;
            1    4     2      thread  Lsun/jvm/hotspot/runtime/JavaThread;
            5    8     2           e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.Exception
    MethodParameters:
            Name  Flags
      threadAddr  

  public void oopsDo(sun.jvm.hotspot.runtime.AddressVisitor);
    descriptor: (Lsun/jvm/hotspot/runtime/AddressVisitor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // sun.jvm.hotspot.runtime.Threads this
        start local 1 // sun.jvm.hotspot.runtime.AddressVisitor oopVisitor
         0: .line 180
            aload 0 /* this */
            invokevirtual sun.jvm.hotspot.runtime.Threads.first:()Lsun/jvm/hotspot/runtime/JavaThread;
            astore 2 /* thread */
        start local 2 // sun.jvm.hotspot.runtime.JavaThread thread
         1: goto 4
         2: .line 181
      StackMap locals: sun.jvm.hotspot.runtime.JavaThread
      StackMap stack:
            aload 2 /* thread */
            aload 1 /* oopVisitor */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.oopsDo:(Lsun/jvm/hotspot/runtime/AddressVisitor;)V
         3: .line 180
            aload 2 /* thread */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.next:()Lsun/jvm/hotspot/runtime/JavaThread;
            astore 2 /* thread */
      StackMap locals:
      StackMap stack:
         4: aload 2 /* thread */
            ifnonnull 2
        end local 2 // sun.jvm.hotspot.runtime.JavaThread thread
         5: .line 183
            return
        end local 1 // sun.jvm.hotspot.runtime.AddressVisitor oopVisitor
        end local 0 // sun.jvm.hotspot.runtime.Threads this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lsun/jvm/hotspot/runtime/Threads;
            0    6     1  oopVisitor  Lsun/jvm/hotspot/runtime/AddressVisitor;
            1    5     2      thread  Lsun/jvm/hotspot/runtime/JavaThread;
    MethodParameters:
            Name  Flags
      oopVisitor  

  public sun.jvm.hotspot.runtime.JavaThread owningThreadFromMonitor(sun.jvm.hotspot.debugger.Address);
    descriptor: (Lsun/jvm/hotspot/debugger/Address;)Lsun/jvm/hotspot/runtime/JavaThread;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // sun.jvm.hotspot.runtime.Threads this
        start local 1 // sun.jvm.hotspot.debugger.Address o
         0: .line 187
            aload 1 /* o */
            ifnonnull 1
            aconst_null
            areturn
         1: .line 188
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.jvm.hotspot.runtime.Threads.first:()Lsun/jvm/hotspot/runtime/JavaThread;
            astore 2 /* thread */
        start local 2 // sun.jvm.hotspot.runtime.JavaThread thread
         2: goto 6
         3: .line 189
      StackMap locals: sun.jvm.hotspot.runtime.JavaThread
      StackMap stack:
            aload 1 /* o */
            aload 2 /* thread */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.threadObjectAddress:()Lsun/jvm/hotspot/debugger/Address;
            invokeinterface sun.jvm.hotspot.debugger.Address.equals:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 190
            aload 2 /* thread */
            areturn
         5: .line 188
      StackMap locals:
      StackMap stack:
            aload 2 /* thread */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.next:()Lsun/jvm/hotspot/runtime/JavaThread;
            astore 2 /* thread */
      StackMap locals:
      StackMap stack:
         6: aload 2 /* thread */
            ifnonnull 3
        end local 2 // sun.jvm.hotspot.runtime.JavaThread thread
         7: .line 194
            aload 0 /* this */
            invokevirtual sun.jvm.hotspot.runtime.Threads.first:()Lsun/jvm/hotspot/runtime/JavaThread;
            astore 2 /* thread */
        start local 2 // sun.jvm.hotspot.runtime.JavaThread thread
         8: goto 12
         9: .line 195
      StackMap locals:
      StackMap stack:
            aload 2 /* thread */
            aload 1 /* o */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.isLockOwned:(Lsun/jvm/hotspot/debugger/Address;)Z
            ifeq 11
        10: .line 196
            aload 2 /* thread */
            areturn
        11: .line 194
      StackMap locals:
      StackMap stack:
            aload 2 /* thread */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.next:()Lsun/jvm/hotspot/runtime/JavaThread;
            astore 2 /* thread */
      StackMap locals:
      StackMap stack:
        12: aload 2 /* thread */
            ifnonnull 9
        end local 2 // sun.jvm.hotspot.runtime.JavaThread thread
        13: .line 198
            aconst_null
            areturn
        end local 1 // sun.jvm.hotspot.debugger.Address o
        end local 0 // sun.jvm.hotspot.runtime.Threads this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Lsun/jvm/hotspot/runtime/Threads;
            0   14     1       o  Lsun/jvm/hotspot/debugger/Address;
            2    7     2  thread  Lsun/jvm/hotspot/runtime/JavaThread;
            8   13     2  thread  Lsun/jvm/hotspot/runtime/JavaThread;
    MethodParameters:
      Name  Flags
      o     

  public sun.jvm.hotspot.runtime.JavaThread owningThreadFromMonitor(sun.jvm.hotspot.runtime.ObjectMonitor);
    descriptor: (Lsun/jvm/hotspot/runtime/ObjectMonitor;)Lsun/jvm/hotspot/runtime/JavaThread;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.jvm.hotspot.runtime.Threads this
        start local 1 // sun.jvm.hotspot.runtime.ObjectMonitor monitor
         0: .line 202
            aload 0 /* this */
            aload 1 /* monitor */
            invokevirtual sun.jvm.hotspot.runtime.ObjectMonitor.owner:()Lsun/jvm/hotspot/debugger/Address;
            invokevirtual sun.jvm.hotspot.runtime.Threads.owningThreadFromMonitor:(Lsun/jvm/hotspot/debugger/Address;)Lsun/jvm/hotspot/runtime/JavaThread;
            areturn
        end local 1 // sun.jvm.hotspot.runtime.ObjectMonitor monitor
        end local 0 // sun.jvm.hotspot.runtime.Threads this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lsun/jvm/hotspot/runtime/Threads;
            0    1     1  monitor  Lsun/jvm/hotspot/runtime/ObjectMonitor;
    MethodParameters:
         Name  Flags
      monitor  

  public java.util.List getPendingThreads(sun.jvm.hotspot.runtime.ObjectMonitor);
    descriptor: (Lsun/jvm/hotspot/runtime/ObjectMonitor;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // sun.jvm.hotspot.runtime.Threads this
        start local 1 // sun.jvm.hotspot.runtime.ObjectMonitor monitor
         0: .line 208
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* pendingThreads */
        start local 2 // java.util.List pendingThreads
         1: .line 209
            aload 0 /* this */
            invokevirtual sun.jvm.hotspot.runtime.Threads.first:()Lsun/jvm/hotspot/runtime/JavaThread;
            astore 3 /* thread */
        start local 3 // sun.jvm.hotspot.runtime.JavaThread thread
         2: goto 9
         3: .line 210
      StackMap locals: java.util.List sun.jvm.hotspot.runtime.JavaThread
      StackMap stack:
            aload 3 /* thread */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.isCompilerThread:()Z
            ifne 8
            aload 3 /* thread */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.isCodeCacheSweeperThread:()Z
            ifeq 5
         4: .line 211
            goto 8
         5: .line 213
      StackMap locals:
      StackMap stack:
            aload 3 /* thread */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.getCurrentPendingMonitor:()Lsun/jvm/hotspot/runtime/ObjectMonitor;
            astore 4 /* pending */
        start local 4 // sun.jvm.hotspot.runtime.ObjectMonitor pending
         6: .line 214
            aload 1 /* monitor */
            aload 4 /* pending */
            invokevirtual sun.jvm.hotspot.runtime.ObjectMonitor.equals:(Ljava/lang/Object;)Z
            ifeq 8
         7: .line 215
            aload 2 /* pendingThreads */
            aload 3 /* thread */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // sun.jvm.hotspot.runtime.ObjectMonitor pending
         8: .line 209
      StackMap locals:
      StackMap stack:
            aload 3 /* thread */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.next:()Lsun/jvm/hotspot/runtime/JavaThread;
            astore 3 /* thread */
      StackMap locals:
      StackMap stack:
         9: aload 3 /* thread */
            ifnonnull 3
        end local 3 // sun.jvm.hotspot.runtime.JavaThread thread
        10: .line 218
            aload 2 /* pendingThreads */
            areturn
        end local 2 // java.util.List pendingThreads
        end local 1 // sun.jvm.hotspot.runtime.ObjectMonitor monitor
        end local 0 // sun.jvm.hotspot.runtime.Threads this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0            this  Lsun/jvm/hotspot/runtime/Threads;
            0   11     1         monitor  Lsun/jvm/hotspot/runtime/ObjectMonitor;
            1   11     2  pendingThreads  Ljava/util/List;
            2   10     3          thread  Lsun/jvm/hotspot/runtime/JavaThread;
            6    8     4         pending  Lsun/jvm/hotspot/runtime/ObjectMonitor;
    MethodParameters:
         Name  Flags
      monitor  

  public java.util.List getWaitingThreads(sun.jvm.hotspot.runtime.ObjectMonitor);
    descriptor: (Lsun/jvm/hotspot/runtime/ObjectMonitor;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // sun.jvm.hotspot.runtime.Threads this
        start local 1 // sun.jvm.hotspot.runtime.ObjectMonitor monitor
         0: .line 223
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* pendingThreads */
        start local 2 // java.util.List pendingThreads
         1: .line 224
            aload 0 /* this */
            invokevirtual sun.jvm.hotspot.runtime.Threads.first:()Lsun/jvm/hotspot/runtime/JavaThread;
            astore 3 /* thread */
        start local 3 // sun.jvm.hotspot.runtime.JavaThread thread
         2: goto 7
         3: .line 225
      StackMap locals: java.util.List sun.jvm.hotspot.runtime.JavaThread
      StackMap stack:
            aload 3 /* thread */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.getCurrentWaitingMonitor:()Lsun/jvm/hotspot/runtime/ObjectMonitor;
            astore 4 /* waiting */
        start local 4 // sun.jvm.hotspot.runtime.ObjectMonitor waiting
         4: .line 226
            aload 1 /* monitor */
            aload 4 /* waiting */
            invokevirtual sun.jvm.hotspot.runtime.ObjectMonitor.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 227
            aload 2 /* pendingThreads */
            aload 3 /* thread */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // sun.jvm.hotspot.runtime.ObjectMonitor waiting
         6: .line 224
      StackMap locals:
      StackMap stack:
            aload 3 /* thread */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.next:()Lsun/jvm/hotspot/runtime/JavaThread;
            astore 3 /* thread */
      StackMap locals:
      StackMap stack:
         7: aload 3 /* thread */
            ifnonnull 3
        end local 3 // sun.jvm.hotspot.runtime.JavaThread thread
         8: .line 230
            aload 2 /* pendingThreads */
            areturn
        end local 2 // java.util.List pendingThreads
        end local 1 // sun.jvm.hotspot.runtime.ObjectMonitor monitor
        end local 0 // sun.jvm.hotspot.runtime.Threads this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0            this  Lsun/jvm/hotspot/runtime/Threads;
            0    9     1         monitor  Lsun/jvm/hotspot/runtime/ObjectMonitor;
            1    9     2  pendingThreads  Ljava/util/List;
            2    8     3          thread  Lsun/jvm/hotspot/runtime/JavaThread;
            4    6     4         waiting  Lsun/jvm/hotspot/runtime/ObjectMonitor;
    MethodParameters:
         Name  Flags
      monitor  
}
SourceFile: "Threads.java"
NestMembers:
  sun.jvm.hotspot.runtime.Threads$1
InnerClasses:
  sun.jvm.hotspot.runtime.Threads$1