public abstract class java.util.concurrent.locks.AbstractQueuedSynchronizer extends java.util.concurrent.locks.AbstractOwnableSynchronizer implements java.io.Serializable
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: java.util.concurrent.locks.AbstractQueuedSynchronizer
  super_class: java.util.concurrent.locks.AbstractOwnableSynchronizer
{
  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 7373984972572414691

  private volatile transient java.util.concurrent.locks.AbstractQueuedSynchronizer$Node head;
    descriptor: Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    flags: (0x00c2) ACC_PRIVATE, ACC_VOLATILE, ACC_TRANSIENT

  private volatile transient java.util.concurrent.locks.AbstractQueuedSynchronizer$Node tail;
    descriptor: Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    flags: (0x00c2) ACC_PRIVATE, ACC_VOLATILE, ACC_TRANSIENT

  private volatile int state;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  static final long spinForTimeoutThreshold;
    descriptor: J
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1000

  private static final sun.misc.Unsafe unsafe;
    descriptor: Lsun/misc/Unsafe;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final long stateOffset;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final long headOffset;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final long tailOffset;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final long waitStatusOffset;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final long nextOffset;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 2260
            invokestatic sun.misc.Unsafe.getUnsafe:()Lsun/misc/Unsafe;
            putstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.unsafe:Lsun/misc/Unsafe;
         1: .line 2269
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.unsafe:Lsun/misc/Unsafe;
         2: .line 2270
            ldc Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            ldc "state"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
         3: .line 2269
            invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
            putstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.stateOffset:J
         4: .line 2271
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.unsafe:Lsun/misc/Unsafe;
         5: .line 2272
            ldc Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            ldc "head"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
         6: .line 2271
            invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
            putstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.headOffset:J
         7: .line 2273
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.unsafe:Lsun/misc/Unsafe;
         8: .line 2274
            ldc Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            ldc "tail"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
         9: .line 2273
            invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
            putstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.tailOffset:J
        10: .line 2275
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.unsafe:Lsun/misc/Unsafe;
        11: .line 2276
            ldc Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            ldc "waitStatus"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
        12: .line 2275
            invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
            putstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.waitStatusOffset:J
        13: .line 2277
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.unsafe:Lsun/misc/Unsafe;
        14: .line 2278
            ldc Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            ldc "next"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
        15: .line 2277
            invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
            putstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.nextOffset:J
        16: .line 2280
            goto 19
      StackMap locals:
      StackMap stack: java.lang.Exception
        17: astore 0 /* ex */
        start local 0 // java.lang.Exception ex
        18: new java.lang.Error
            dup
            aload 0 /* ex */
            invokespecial java.lang.Error.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 0 // java.lang.Exception ex
        19: .line 2281
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
           18   19     0    ex  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           1    16      17  Class java.lang.Exception

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 299
            aload 0 /* this */
            invokespecial java.util.concurrent.locks.AbstractOwnableSynchronizer.<init>:()V
            return
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;

  protected final int getState();
    descriptor: ()I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 541
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.state:I
            ireturn
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;

  protected final void setState(int);
    descriptor: (I)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int newState
         0: .line 550
            aload 0 /* this */
            iload 1 /* newState */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer.state:I
         1: .line 551
            return
        end local 1 // int newState
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    2     1  newState  I
    MethodParameters:
          Name  Flags
      newState  

  protected final boolean compareAndSetState(int, int);
    descriptor: (II)Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int expect
        start local 2 // int update
         0: .line 566
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.unsafe:Lsun/misc/Unsafe;
            aload 0 /* this */
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.stateOffset:J
            iload 1 /* expect */
            iload 2 /* update */
            invokevirtual sun.misc.Unsafe.compareAndSwapInt:(Ljava/lang/Object;JII)Z
            ireturn
        end local 2 // int update
        end local 1 // int expect
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    1     1  expect  I
            0    1     2  update  I
    MethodParameters:
        Name  Flags
      expect  
      update  

  private java.util.concurrent.locks.AbstractQueuedSynchronizer$Node enq(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         0: .line 585
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* t */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node t
         1: .line 586
            aload 2 /* t */
            ifnonnull 5
         2: .line 587
            aload 0 /* this */
            new java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
            dup
            invokespecial java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.<init>:()V
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetHead:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 0
         3: .line 588
            aload 0 /* this */
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         4: .line 589
            goto 0
         5: .line 590
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 1 /* node */
            aload 2 /* t */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         6: .line 591
            aload 0 /* this */
            aload 2 /* t */
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetTail:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 0
         7: .line 592
            aload 2 /* t */
            aload 1 /* node */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         8: .line 593
            aload 2 /* t */
            areturn
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node t
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    9     1  node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            1    9     2     t  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
      Name  Flags
      node  final

  private java.util.concurrent.locks.AbstractQueuedSynchronizer$Node addWaiter(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node mode
         0: .line 606
            new java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
            dup
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            aload 1 /* mode */
            invokespecial java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.<init>:(Ljava/lang/Thread;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
            astore 2 /* node */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         1: .line 608
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 3 /* pred */
        start local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node pred
         2: .line 609
            aload 3 /* pred */
            ifnull 7
         3: .line 610
            aload 2 /* node */
            aload 3 /* pred */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         4: .line 611
            aload 0 /* this */
            aload 3 /* pred */
            aload 2 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetTail:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 7
         5: .line 612
            aload 3 /* pred */
            aload 2 /* node */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         6: .line 613
            aload 2 /* node */
            areturn
         7: .line 616
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 0 /* this */
            aload 2 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.enq:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            pop
         8: .line 617
            aload 2 /* node */
            areturn
        end local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node pred
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node mode
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    9     1  mode  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            1    9     2  node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            2    9     3  pred  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
      Name  Flags
      mode  

  private void setHead(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         0: .line 628
            aload 0 /* this */
            aload 1 /* node */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         1: .line 629
            aload 1 /* node */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
         2: .line 630
            aload 1 /* node */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         3: .line 631
            return
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    4     1  node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
      Name  Flags
      node  

  private void unparkSuccessor(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         0: .line 644
            aload 1 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            istore 2 /* ws */
        start local 2 // int ws
         1: .line 645
            iload 2 /* ws */
            ifge 3
         2: .line 646
            aload 1 /* node */
            iload 2 /* ws */
            iconst_0
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetWaitStatus:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;II)Z
            pop
         3: .line 654
      StackMap locals: int
      StackMap stack:
            aload 1 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 3 /* s */
        start local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node s
         4: .line 655
            aload 3 /* s */
            ifnull 5
            aload 3 /* s */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            ifle 12
         5: .line 656
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aconst_null
            astore 3 /* s */
         6: .line 657
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 4 /* t */
        start local 4 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node t
         7: goto 11
         8: .line 658
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 4 /* t */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            ifgt 10
         9: .line 659
            aload 4 /* t */
            astore 3 /* s */
        10: .line 657
      StackMap locals:
      StackMap stack:
            aload 4 /* t */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 4 /* t */
      StackMap locals:
      StackMap stack:
        11: aload 4 /* t */
            ifnull 12
            aload 4 /* t */
            aload 1 /* node */
            if_acmpne 8
        end local 4 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node t
        12: .line 661
      StackMap locals:
      StackMap stack:
            aload 3 /* s */
            ifnull 14
        13: .line 662
            aload 3 /* s */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
            invokestatic java.util.concurrent.locks.LockSupport.unpark:(Ljava/lang/Thread;)V
        14: .line 663
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node s
        end local 2 // int ws
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   15     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0   15     1  node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            1   15     2    ws  I
            4   15     3     s  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            7   12     4     t  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
      Name  Flags
      node  

  private void doReleaseShared();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 683
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 1 /* h */
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node h
         1: .line 684
            aload 1 /* h */
            ifnull 11
            aload 1 /* h */
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpeq 11
         2: .line 685
            aload 1 /* h */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            istore 2 /* ws */
        start local 2 // int ws
         3: .line 686
            iload 2 /* ws */
            iconst_m1
            if_icmpne 8
         4: .line 687
            aload 1 /* h */
            iconst_m1
            iconst_0
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetWaitStatus:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;II)Z
            ifne 6
         5: .line 688
            goto 0
         6: .line 689
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* h */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.unparkSuccessor:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
         7: .line 690
            goto 11
         8: .line 691
      StackMap locals:
      StackMap stack:
            iload 2 /* ws */
            ifne 11
         9: .line 692
            aload 1 /* h */
            iconst_0
            bipush -3
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetWaitStatus:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;II)Z
            ifne 11
        10: .line 693
            goto 0
        end local 2 // int ws
        11: .line 695
      StackMap locals:
      StackMap stack:
            aload 1 /* h */
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpne 0
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node h
        12: .line 698
            return
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            1   12     1     h  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            3   11     2    ws  I

  private void setHeadAndPropagate(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node, int);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        start local 2 // int propagate
         0: .line 709
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 3 /* h */
        start local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node h
         1: .line 710
            aload 0 /* this */
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.setHead:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
         2: .line 727
            iload 2 /* propagate */
            ifgt 4
            aload 3 /* h */
            ifnull 4
            aload 3 /* h */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            iflt 4
         3: .line 728
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            dup
            astore 3 /* h */
            ifnull 4
            aload 3 /* h */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            ifge 7
         4: .line 729
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 1 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 4 /* s */
        start local 4 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node s
         5: .line 730
            aload 4 /* s */
            ifnull 6
            aload 4 /* s */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.isShared:()Z
            ifeq 7
         6: .line 731
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.doReleaseShared:()V
        end local 4 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node s
         7: .line 733
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node h
        end local 2 // int propagate
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    8     1       node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            0    8     2  propagate  I
            1    8     3          h  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            5    7     4          s  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
           Name  Flags
      node       
      propagate  

  private void cancelAcquire(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         0: .line 744
            aload 1 /* node */
            ifnonnull 2
         1: .line 745
            return
         2: .line 747
      StackMap locals:
      StackMap stack:
            aload 1 /* node */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
         3: .line 750
            aload 1 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* pred */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node pred
         4: .line 751
            goto 6
         5: .line 752
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 1 /* node */
            aload 2 /* pred */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            dup
            astore 2 /* pred */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         6: .line 751
      StackMap locals:
      StackMap stack:
            aload 2 /* pred */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            ifgt 5
         7: .line 757
            aload 2 /* pred */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 3 /* predNext */
        start local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node predNext
         8: .line 762
            aload 1 /* node */
            iconst_1
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
         9: .line 765
            aload 1 /* node */
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpne 12
            aload 0 /* this */
            aload 1 /* node */
            aload 2 /* pred */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetTail:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 12
        10: .line 766
            aload 2 /* pred */
            aload 3 /* predNext */
            aconst_null
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetNext:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            pop
        11: .line 767
            goto 23
        12: .line 771
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 2 /* pred */
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpeq 21
        13: .line 772
            aload 2 /* pred */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            dup
            istore 4 /* ws */
        start local 4 // int ws
        14: iconst_m1
            if_icmpeq 16
        15: .line 773
            iload 4 /* ws */
            ifgt 21
            aload 2 /* pred */
            iload 4 /* ws */
            iconst_m1
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetWaitStatus:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;II)Z
            ifeq 21
        16: .line 774
      StackMap locals: int
      StackMap stack:
            aload 2 /* pred */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
            ifnull 21
        17: .line 775
            aload 1 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 5 /* next */
        start local 5 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node next
        18: .line 776
            aload 5 /* next */
            ifnull 22
            aload 5 /* next */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            ifgt 22
        19: .line 777
            aload 2 /* pred */
            aload 3 /* predNext */
            aload 5 /* next */
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetNext:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            pop
        end local 5 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node next
        20: .line 778
            goto 22
        end local 4 // int ws
        21: .line 779
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.unparkSuccessor:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
        22: .line 782
      StackMap locals:
      StackMap stack:
            aload 1 /* node */
            aload 1 /* node */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
        23: .line 784
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node predNext
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node pred
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   24     0      this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0   24     1      node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            4   24     2      pred  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            8   24     3  predNext  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
           14   21     4        ws  I
           18   20     5      next  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
      Name  Flags
      node  

  private static boolean shouldParkAfterFailedAcquire(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node, java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node pred
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         0: .line 796
            aload 0 /* pred */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            istore 2 /* ws */
        start local 2 // int ws
         1: .line 797
            iload 2 /* ws */
            iconst_m1
            if_icmpne 3
         2: .line 802
            iconst_1
            ireturn
         3: .line 803
      StackMap locals: int
      StackMap stack:
            iload 2 /* ws */
            ifle 9
         4: .line 809
      StackMap locals:
      StackMap stack:
            aload 1 /* node */
            aload 0 /* pred */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            dup
            astore 0 /* pred */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         5: .line 810
            aload 0 /* pred */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
         6: .line 808
            ifgt 4
         7: .line 811
            aload 0 /* pred */
            aload 1 /* node */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         8: .line 812
            goto 10
         9: .line 818
      StackMap locals:
      StackMap stack:
            aload 0 /* pred */
            iload 2 /* ws */
            iconst_m1
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetWaitStatus:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;II)Z
            pop
        10: .line 820
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // int ws
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node pred
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  pred  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            0   11     1  node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            1   11     2    ws  I
    MethodParameters:
      Name  Flags
      pred  
      node  

  static void selfInterrupt();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 827
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
         1: .line 828
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private final boolean parkAndCheckInterrupt();
    descriptor: ()Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 836
            aload 0 /* this */
            invokestatic java.util.concurrent.locks.LockSupport.park:(Ljava/lang/Object;)V
         1: .line 837
            invokestatic java.lang.Thread.interrupted:()Z
            ireturn
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;

  final boolean acquireQueued(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node, int);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
    flags: (0x0010) ACC_FINAL
    Code:
      stack=2, locals=8, args_size=3
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        start local 2 // int arg
         0: .line 858
            iconst_1
            istore 3 /* failed */
        start local 3 // boolean failed
         1: .line 860
            iconst_0
            istore 4 /* interrupted */
        start local 4 // boolean interrupted
         2: .line 862
      StackMap locals: int int
      StackMap stack:
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.predecessor:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 5 /* p */
        start local 5 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         3: .line 863
            aload 5 /* p */
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpne 11
            aload 0 /* this */
            iload 2 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquire:(I)Z
            ifeq 11
         4: .line 864
            aload 0 /* this */
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.setHead:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
         5: .line 865
            aload 5 /* p */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         6: .line 866
            iconst_0
            istore 3 /* failed */
         7: .line 867
            iload 4 /* interrupted */
            istore 7
         8: .line 874
            iload 3 /* failed */
            ifeq 10
         9: .line 875
            aload 0 /* this */
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.cancelAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
        10: .line 867
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int int java.util.concurrent.locks.AbstractQueuedSynchronizer$Node top int
      StackMap stack:
            iload 7
            ireturn
        11: .line 869
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int int java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 5 /* p */
            aload 1 /* node */
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.shouldParkAfterFailedAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 2
        12: .line 870
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt:()Z
            ifeq 2
        13: .line 871
            iconst_1
            istore 4 /* interrupted */
        end local 5 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
        14: .line 861
            goto 2
        end local 4 // boolean interrupted
        15: .line 873
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int
      StackMap stack: java.lang.Throwable
            astore 6
        16: .line 874
            iload 3 /* failed */
            ifeq 18
        17: .line 875
            aload 0 /* this */
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.cancelAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
        18: .line 876
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int top top java.lang.Throwable
      StackMap stack:
            aload 6
            athrow
        end local 3 // boolean failed
        end local 2 // int arg
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   19     0         this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0   19     1         node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            0   19     2          arg  I
            1   19     3       failed  Z
            2   15     4  interrupted  Z
            3   14     5            p  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
      Exception table:
        from    to  target  type
           1     8      15  any
          11    15      15  any
    MethodParameters:
      Name  Flags
      node  final
      arg   

  private void doAcquireInterruptibly(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
         0: .line 885
            aload 0 /* this */
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.EXCLUSIVE:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.addWaiter:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* node */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         1: .line 886
            iconst_1
            istore 3 /* failed */
        start local 3 // boolean failed
         2: .line 889
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack:
            aload 2 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.predecessor:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 4 /* p */
        start local 4 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         3: .line 890
            aload 4 /* p */
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpne 10
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquire:(I)Z
            ifeq 10
         4: .line 891
            aload 0 /* this */
            aload 2 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.setHead:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
         5: .line 892
            aload 4 /* p */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         6: .line 893
            iconst_0
            istore 3 /* failed */
         7: .line 901
            iload 3 /* failed */
            ifeq 9
         8: .line 902
            aload 0 /* this */
            aload 2 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.cancelAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
         9: .line 894
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            return
        10: .line 896
      StackMap locals:
      StackMap stack:
            aload 4 /* p */
            aload 2 /* node */
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.shouldParkAfterFailedAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 2
        11: .line 897
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt:()Z
            ifeq 2
        12: .line 898
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
        end local 4 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
        13: .line 900
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer int java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack: java.lang.Throwable
            astore 5
        14: .line 901
            iload 3 /* failed */
            ifeq 16
        15: .line 902
            aload 0 /* this */
            aload 2 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.cancelAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
        16: .line 903
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer int java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int top java.lang.Throwable
      StackMap stack:
            aload 5
            athrow
        end local 3 // boolean failed
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   17     0    this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0   17     1     arg  I
            1   17     2    node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            2   17     3  failed  Z
            3   13     4       p  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
      Exception table:
        from    to  target  type
           2     7      13  any
          10    13      13  any
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
      Name  Flags
      arg   

  private boolean doAcquireNanos(int, long);
    descriptor: (IJ)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=10, args_size=3
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
        start local 2 // long nanosTimeout
         0: .line 915
            lload 2 /* nanosTimeout */
            lconst_0
            lcmp
            ifgt 2
         1: .line 916
            iconst_0
            ireturn
         2: .line 917
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.nanoTime:()J
            lload 2 /* nanosTimeout */
            ladd
            lstore 4 /* deadline */
        start local 4 // long deadline
         3: .line 918
            aload 0 /* this */
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.EXCLUSIVE:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.addWaiter:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 6 /* node */
        start local 6 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         4: .line 919
            iconst_1
            istore 7 /* failed */
        start local 7 // boolean failed
         5: .line 922
      StackMap locals: long java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack:
            aload 6 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.predecessor:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 8 /* p */
        start local 8 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         6: .line 923
            aload 8 /* p */
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpne 13
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquire:(I)Z
            ifeq 13
         7: .line 924
            aload 0 /* this */
            aload 6 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.setHead:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
         8: .line 925
            aload 8 /* p */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         9: .line 926
            iconst_0
            istore 7 /* failed */
        10: .line 939
            iload 7 /* failed */
            ifeq 12
        11: .line 940
            aload 0 /* this */
            aload 6 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.cancelAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
        12: .line 927
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            iconst_1
            ireturn
        13: .line 929
      StackMap locals:
      StackMap stack:
            lload 4 /* deadline */
            invokestatic java.lang.System.nanoTime:()J
            lsub
            lstore 2 /* nanosTimeout */
        14: .line 930
            lload 2 /* nanosTimeout */
            lconst_0
            lcmp
            ifgt 18
        15: .line 939
            iload 7 /* failed */
            ifeq 17
        16: .line 940
            aload 0 /* this */
            aload 6 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.cancelAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
        17: .line 931
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        18: .line 932
      StackMap locals:
      StackMap stack:
            aload 8 /* p */
            aload 6 /* node */
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.shouldParkAfterFailedAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 21
        19: .line 933
            lload 2 /* nanosTimeout */
            ldc 1000
            lcmp
            ifle 21
        20: .line 934
            aload 0 /* this */
            lload 2 /* nanosTimeout */
            invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(Ljava/lang/Object;J)V
        21: .line 935
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 5
        22: .line 936
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
        end local 8 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
        23: .line 938
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer int long long java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack: java.lang.Throwable
            astore 9
        24: .line 939
            iload 7 /* failed */
            ifeq 26
        25: .line 940
            aload 0 /* this */
            aload 6 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.cancelAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
        26: .line 941
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer int long long java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int top java.lang.Throwable
      StackMap stack:
            aload 9
            athrow
        end local 7 // boolean failed
        end local 6 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 4 // long deadline
        end local 2 // long nanosTimeout
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   27     0          this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0   27     1           arg  I
            0   27     2  nanosTimeout  J
            3   27     4      deadline  J
            4   27     6          node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            5   27     7        failed  Z
            6   23     8             p  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
      Exception table:
        from    to  target  type
           5    10      23  any
          13    15      23  any
          18    23      23  any
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
              Name  Flags
      arg           
      nanosTimeout  

  private void doAcquireShared(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=8, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
         0: .line 949
            aload 0 /* this */
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.SHARED:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.addWaiter:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* node */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         1: .line 950
            iconst_1
            istore 3 /* failed */
        start local 3 // boolean failed
         2: .line 952
            iconst_0
            istore 4 /* interrupted */
        start local 4 // boolean interrupted
         3: .line 954
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int
      StackMap stack:
            aload 2 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.predecessor:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 5 /* p */
        start local 5 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         4: .line 955
            aload 5 /* p */
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpne 15
         5: .line 956
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireShared:(I)I
            istore 6 /* r */
        start local 6 // int r
         6: .line 957
            iload 6 /* r */
            iflt 15
         7: .line 958
            aload 0 /* this */
            aload 2 /* node */
            iload 6 /* r */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.setHeadAndPropagate:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)V
         8: .line 959
            aload 5 /* p */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         9: .line 960
            iload 4 /* interrupted */
            ifeq 11
        10: .line 961
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.selfInterrupt:()V
        11: .line 962
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack:
            iconst_0
            istore 3 /* failed */
        12: .line 971
            iload 3 /* failed */
            ifeq 14
        13: .line 972
            aload 0 /* this */
            aload 2 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.cancelAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
        14: .line 963
      StackMap locals:
      StackMap stack:
            return
        end local 6 // int r
        15: .line 966
      StackMap locals:
      StackMap stack:
            aload 5 /* p */
            aload 2 /* node */
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.shouldParkAfterFailedAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 3
        16: .line 967
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt:()Z
            ifeq 3
        17: .line 968
            iconst_1
            istore 4 /* interrupted */
        end local 5 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
        18: .line 953
            goto 3
        end local 4 // boolean interrupted
        19: .line 970
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer int java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack: java.lang.Throwable
            astore 7
        20: .line 971
            iload 3 /* failed */
            ifeq 22
        21: .line 972
            aload 0 /* this */
            aload 2 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.cancelAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
        22: .line 973
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer int java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int top top top java.lang.Throwable
      StackMap stack:
            aload 7
            athrow
        end local 3 // boolean failed
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   23     0         this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0   23     1          arg  I
            1   23     2         node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            2   23     3       failed  Z
            3   19     4  interrupted  Z
            4   18     5            p  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            6   15     6            r  I
      Exception table:
        from    to  target  type
           2    12      19  any
          15    19      19  any
    MethodParameters:
      Name  Flags
      arg   

  private void doAcquireSharedInterruptibly(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
         0: .line 982
            aload 0 /* this */
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.SHARED:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.addWaiter:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* node */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         1: .line 983
            iconst_1
            istore 3 /* failed */
        start local 3 // boolean failed
         2: .line 986
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack:
            aload 2 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.predecessor:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 4 /* p */
        start local 4 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         3: .line 987
            aload 4 /* p */
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpne 12
         4: .line 988
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireShared:(I)I
            istore 5 /* r */
        start local 5 // int r
         5: .line 989
            iload 5 /* r */
            iflt 12
         6: .line 990
            aload 0 /* this */
            aload 2 /* node */
            iload 5 /* r */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.setHeadAndPropagate:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)V
         7: .line 991
            aload 4 /* p */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         8: .line 992
            iconst_0
            istore 3 /* failed */
         9: .line 1001
            iload 3 /* failed */
            ifeq 11
        10: .line 1002
            aload 0 /* this */
            aload 2 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.cancelAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
        11: .line 993
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack:
            return
        end local 5 // int r
        12: .line 996
      StackMap locals:
      StackMap stack:
            aload 4 /* p */
            aload 2 /* node */
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.shouldParkAfterFailedAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 2
        13: .line 997
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt:()Z
            ifeq 2
        14: .line 998
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
        end local 4 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
        15: .line 1000
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer int java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack: java.lang.Throwable
            astore 6
        16: .line 1001
            iload 3 /* failed */
            ifeq 18
        17: .line 1002
            aload 0 /* this */
            aload 2 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.cancelAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
        18: .line 1003
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer int java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int top top java.lang.Throwable
      StackMap stack:
            aload 6
            athrow
        end local 3 // boolean failed
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   19     0    this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0   19     1     arg  I
            1   19     2    node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            2   19     3  failed  Z
            3   15     4       p  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            5   12     5       r  I
      Exception table:
        from    to  target  type
           2     9      15  any
          12    15      15  any
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
      Name  Flags
      arg   

  private boolean doAcquireSharedNanos(int, long);
    descriptor: (IJ)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=11, args_size=3
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
        start local 2 // long nanosTimeout
         0: .line 1015
            lload 2 /* nanosTimeout */
            lconst_0
            lcmp
            ifgt 2
         1: .line 1016
            iconst_0
            ireturn
         2: .line 1017
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.nanoTime:()J
            lload 2 /* nanosTimeout */
            ladd
            lstore 4 /* deadline */
        start local 4 // long deadline
         3: .line 1018
            aload 0 /* this */
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.SHARED:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.addWaiter:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 6 /* node */
        start local 6 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         4: .line 1019
            iconst_1
            istore 7 /* failed */
        start local 7 // boolean failed
         5: .line 1022
      StackMap locals: long java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack:
            aload 6 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.predecessor:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 8 /* p */
        start local 8 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         6: .line 1023
            aload 8 /* p */
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpne 15
         7: .line 1024
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireShared:(I)I
            istore 9 /* r */
        start local 9 // int r
         8: .line 1025
            iload 9 /* r */
            iflt 15
         9: .line 1026
            aload 0 /* this */
            aload 6 /* node */
            iload 9 /* r */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.setHeadAndPropagate:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)V
        10: .line 1027
            aload 8 /* p */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
        11: .line 1028
            iconst_0
            istore 7 /* failed */
        12: .line 1042
            iload 7 /* failed */
            ifeq 14
        13: .line 1043
            aload 0 /* this */
            aload 6 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.cancelAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
        14: .line 1029
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack:
            iconst_1
            ireturn
        end local 9 // int r
        15: .line 1032
      StackMap locals:
      StackMap stack:
            lload 4 /* deadline */
            invokestatic java.lang.System.nanoTime:()J
            lsub
            lstore 2 /* nanosTimeout */
        16: .line 1033
            lload 2 /* nanosTimeout */
            lconst_0
            lcmp
            ifgt 20
        17: .line 1042
            iload 7 /* failed */
            ifeq 19
        18: .line 1043
            aload 0 /* this */
            aload 6 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.cancelAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
        19: .line 1034
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        20: .line 1035
      StackMap locals:
      StackMap stack:
            aload 8 /* p */
            aload 6 /* node */
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.shouldParkAfterFailedAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 23
        21: .line 1036
            lload 2 /* nanosTimeout */
            ldc 1000
            lcmp
            ifle 23
        22: .line 1037
            aload 0 /* this */
            lload 2 /* nanosTimeout */
            invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(Ljava/lang/Object;J)V
        23: .line 1038
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 5
        24: .line 1039
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
        end local 8 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
        25: .line 1041
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer int long long java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack: java.lang.Throwable
            astore 10
        26: .line 1042
            iload 7 /* failed */
            ifeq 28
        27: .line 1043
            aload 0 /* this */
            aload 6 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.cancelAcquire:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
        28: .line 1044
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer int long long java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int top top java.lang.Throwable
      StackMap stack:
            aload 10
            athrow
        end local 7 // boolean failed
        end local 6 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 4 // long deadline
        end local 2 // long nanosTimeout
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   29     0          this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0   29     1           arg  I
            0   29     2  nanosTimeout  J
            3   29     4      deadline  J
            4   29     6          node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            5   29     7        failed  Z
            6   25     8             p  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            8   15     9             r  I
      Exception table:
        from    to  target  type
           5    12      25  any
          15    17      25  any
          20    25      25  any
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
              Name  Flags
      arg           
      nanosTimeout  

  protected boolean tryAcquire(int);
    descriptor: (I)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
         0: .line 1076
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    1     1   arg  I
    MethodParameters:
      Name  Flags
      arg   

  protected boolean tryRelease(int);
    descriptor: (I)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
         0: .line 1102
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    1     1   arg  I
    MethodParameters:
      Name  Flags
      arg   

  protected int tryAcquireShared(int);
    descriptor: (I)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
         0: .line 1138
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    1     1   arg  I
    MethodParameters:
      Name  Flags
      arg   

  protected boolean tryReleaseShared(int);
    descriptor: (I)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
         0: .line 1163
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    1     1   arg  I
    MethodParameters:
      Name  Flags
      arg   

  protected boolean isHeldExclusively();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 1182
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;

  public final void acquire(int);
    descriptor: (I)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
         0: .line 1198
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquire:(I)Z
            ifne 3
         1: .line 1199
            aload 0 /* this */
            aload 0 /* this */
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.EXCLUSIVE:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.addWaiter:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
            ifeq 3
         2: .line 1200
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.selfInterrupt:()V
         3: .line 1201
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    4     1   arg  I
    MethodParameters:
      Name  Flags
      arg   

  public final void acquireInterruptibly(int);
    descriptor: (I)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
         0: .line 1219
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 2
         1: .line 1220
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         2: .line 1221
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquire:(I)Z
            ifne 4
         3: .line 1222
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireInterruptibly:(I)V
         4: .line 1223
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    5     1   arg  I
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
      Name  Flags
      arg   

  public final boolean tryAcquireNanos(int, long);
    descriptor: (IJ)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
        start local 2 // long nanosTimeout
         0: .line 1244
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 2
         1: .line 1245
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         2: .line 1246
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquire:(I)Z
            ifne 5
         3: .line 1247
            aload 0 /* this */
            iload 1 /* arg */
            lload 2 /* nanosTimeout */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireNanos:(IJ)Z
            ifne 5
         4: .line 1246
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_1
            ireturn
        end local 2 // long nanosTimeout
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    6     1           arg  I
            0    6     2  nanosTimeout  J
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
              Name  Flags
      arg           
      nanosTimeout  

  public final boolean release(int);
    descriptor: (I)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
         0: .line 1261
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.tryRelease:(I)Z
            ifeq 5
         1: .line 1262
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* h */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node h
         2: .line 1263
            aload 2 /* h */
            ifnull 4
            aload 2 /* h */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            ifeq 4
         3: .line 1264
            aload 0 /* this */
            aload 2 /* h */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.unparkSuccessor:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
         4: .line 1265
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node h
         5: .line 1267
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    6     1   arg  I
            2    5     2     h  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
      Name  Flags
      arg   

  public final void acquireShared(int);
    descriptor: (I)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
         0: .line 1282
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireShared:(I)I
            ifge 2
         1: .line 1283
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared:(I)V
         2: .line 1284
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    3     1   arg  I
    MethodParameters:
      Name  Flags
      arg   

  public final void acquireSharedInterruptibly(int);
    descriptor: (I)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
         0: .line 1301
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 2
         1: .line 1302
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         2: .line 1303
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireShared:(I)I
            ifge 4
         3: .line 1304
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly:(I)V
         4: .line 1305
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    5     1   arg  I
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
      Name  Flags
      arg   

  public final boolean tryAcquireSharedNanos(int, long);
    descriptor: (IJ)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
        start local 2 // long nanosTimeout
         0: .line 1325
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 2
         1: .line 1326
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         2: .line 1327
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireShared:(I)I
            ifge 5
         3: .line 1328
            aload 0 /* this */
            iload 1 /* arg */
            lload 2 /* nanosTimeout */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos:(IJ)Z
            ifne 5
         4: .line 1327
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_1
            ireturn
        end local 2 // long nanosTimeout
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    6     1           arg  I
            0    6     2  nanosTimeout  J
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
              Name  Flags
      arg           
      nanosTimeout  

  public final boolean releaseShared(int);
    descriptor: (I)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // int arg
         0: .line 1341
            aload 0 /* this */
            iload 1 /* arg */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.tryReleaseShared:(I)Z
            ifeq 3
         1: .line 1342
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.doReleaseShared:()V
         2: .line 1343
            iconst_1
            ireturn
         3: .line 1345
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // int arg
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    4     1   arg  I
    MethodParameters:
      Name  Flags
      arg   

  public final boolean hasQueuedThreads();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 1362
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;

  public final boolean hasContended();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 1375
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;

  public final java.lang.Thread getFirstQueuedThread();
    descriptor: ()Ljava/lang/Thread;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 1391
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpne 1
            aconst_null
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.fullGetFirstQueuedThread:()Ljava/lang/Thread;
      StackMap locals:
      StackMap stack: java.lang.Thread
         2: areturn
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;

  private java.lang.Thread fullGetFirstQueuedThread();
    descriptor: ()Ljava/lang/Thread;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=7, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 1408
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            dup
            astore 1 /* h */
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node h
         1: ifnull 5
            aload 1 /* h */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            dup
            astore 2 /* s */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node s
         2: ifnull 5
         3: .line 1409
            aload 2 /* s */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpne 5
            aload 2 /* s */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
            dup
            astore 3 /* st */
        start local 3 // java.lang.Thread st
         4: ifnonnull 9
        end local 3 // java.lang.Thread st
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node s
         5: .line 1410
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            dup
            astore 1 /* h */
            ifnull 10
            aload 1 /* h */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            dup
            astore 2 /* s */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node s
         6: ifnull 10
         7: .line 1411
            aload 2 /* s */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpne 10
            aload 2 /* s */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
            dup
            astore 3 /* st */
        start local 3 // java.lang.Thread st
         8: ifnull 10
         9: .line 1412
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node java.lang.Thread
      StackMap stack:
            aload 3 /* st */
            areturn
        end local 3 // java.lang.Thread st
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node s
        10: .line 1422
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 4 /* t */
        start local 4 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node t
        11: .line 1423
            aconst_null
            astore 5 /* firstThread */
        start local 5 // java.lang.Thread firstThread
        12: .line 1424
            goto 17
        13: .line 1425
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer java.util.concurrent.locks.AbstractQueuedSynchronizer$Node top top java.util.concurrent.locks.AbstractQueuedSynchronizer$Node java.lang.Thread
      StackMap stack:
            aload 4 /* t */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
            astore 6 /* tt */
        start local 6 // java.lang.Thread tt
        14: .line 1426
            aload 6 /* tt */
            ifnull 16
        15: .line 1427
            aload 6 /* tt */
            astore 5 /* firstThread */
        16: .line 1428
      StackMap locals: java.lang.Thread
      StackMap stack:
            aload 4 /* t */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 4 /* t */
        end local 6 // java.lang.Thread tt
        17: .line 1424
      StackMap locals:
      StackMap stack:
            aload 4 /* t */
            ifnull 18
            aload 4 /* t */
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            if_acmpne 13
        18: .line 1430
      StackMap locals:
      StackMap stack:
            aload 5 /* firstThread */
            areturn
        end local 5 // java.lang.Thread firstThread
        end local 4 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node t
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node h
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   19     0         this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            1   19     1            h  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            2    5     2            s  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            6   10     2            s  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            4    5     3           st  Ljava/lang/Thread;
            8   10     3           st  Ljava/lang/Thread;
           11   19     4            t  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
           12   19     5  firstThread  Ljava/lang/Thread;
           14   17     6           tt  Ljava/lang/Thread;

  public final boolean isQueued(java.lang.Thread);
    descriptor: (Ljava/lang/Thread;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.lang.Thread thread
         0: .line 1444
            aload 1 /* thread */
            ifnonnull 2
         1: .line 1445
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 1446
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* p */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         3: goto 7
         4: .line 1447
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 2 /* p */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
            aload 1 /* thread */
            if_acmpne 6
         5: .line 1448
            iconst_1
            ireturn
         6: .line 1446
      StackMap locals:
      StackMap stack:
            aload 2 /* p */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* p */
      StackMap locals:
      StackMap stack:
         7: aload 2 /* p */
            ifnonnull 4
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         8: .line 1449
            iconst_0
            ireturn
        end local 1 // java.lang.Thread thread
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    9     1  thread  Ljava/lang/Thread;
            3    8     2       p  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
        Name  Flags
      thread  

  final boolean apparentlyFirstQueuedIsExclusive();
    descriptor: ()Z
    flags: (0x0010) ACC_FINAL
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 1463
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            dup
            astore 1 /* h */
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node h
         1: ifnull 7
         2: .line 1464
            aload 1 /* h */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            dup
            astore 2 /* s */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node s
         3: ifnull 7
         4: .line 1465
            aload 2 /* s */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.isShared:()Z
            ifne 7
         5: .line 1466
            aload 2 /* s */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
            ifnull 7
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node s
         6: .line 1463
            iconst_1
            ireturn
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
         7: iconst_0
            ireturn
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node h
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            1    8     1     h  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            3    6     2     s  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;

  public final boolean hasQueuedPredecessors();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 1516
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 1 /* t */
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node t
         1: .line 1517
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* h */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node h
         2: .line 1519
            aload 2 /* h */
            aload 1 /* t */
            if_acmpeq 6
         3: .line 1520
            aload 2 /* h */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            dup
            astore 3 /* s */
        start local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node s
         4: ifnull 5
            aload 3 /* s */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            if_acmpeq 6
        end local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node s
         5: .line 1519
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         6: iconst_0
            ireturn
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node h
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node t
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            1    7     1     t  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            2    7     2     h  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            4    5     3     s  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;

  public final int getQueueLength();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 1537
            iconst_0
            istore 1 /* n */
        start local 1 // int n
         1: .line 1538
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* p */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         2: goto 6
         3: .line 1539
      StackMap locals: int java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 2 /* p */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
            ifnull 5
         4: .line 1540
            iinc 1 /* n */ 1
         5: .line 1538
      StackMap locals:
      StackMap stack:
            aload 2 /* p */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* p */
      StackMap locals:
      StackMap stack:
         6: aload 2 /* p */
            ifnonnull 3
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         7: .line 1542
            iload 1 /* n */
            ireturn
        end local 1 // int n
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            1    8     1     n  I
            2    7     2     p  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;

  public final java.util.Collection<java.lang.Thread> getQueuedThreads();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 1557
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* list */
        start local 1 // java.util.ArrayList list
         1: .line 1558
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* p */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         2: goto 7
         3: .line 1559
      StackMap locals: java.util.ArrayList java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 2 /* p */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
            astore 3 /* t */
        start local 3 // java.lang.Thread t
         4: .line 1560
            aload 3 /* t */
            ifnull 6
         5: .line 1561
            aload 1 /* list */
            aload 3 /* t */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // java.lang.Thread t
         6: .line 1558
      StackMap locals:
      StackMap stack:
            aload 2 /* p */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* p */
      StackMap locals:
      StackMap stack:
         7: aload 2 /* p */
            ifnonnull 3
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         8: .line 1563
            aload 1 /* list */
            areturn
        end local 1 // java.util.ArrayList list
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            1    9     1  list  Ljava/util/ArrayList<Ljava/lang/Thread;>;
            2    8     2     p  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            4    6     3     t  Ljava/lang/Thread;
    Signature: ()Ljava/util/Collection<Ljava/lang/Thread;>;

  public final java.util.Collection<java.lang.Thread> getExclusiveQueuedThreads();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 1575
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* list */
        start local 1 // java.util.ArrayList list
         1: .line 1576
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* p */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         2: goto 8
         3: .line 1577
      StackMap locals: java.util.ArrayList java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 2 /* p */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.isShared:()Z
            ifne 7
         4: .line 1578
            aload 2 /* p */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
            astore 3 /* t */
        start local 3 // java.lang.Thread t
         5: .line 1579
            aload 3 /* t */
            ifnull 7
         6: .line 1580
            aload 1 /* list */
            aload 3 /* t */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // java.lang.Thread t
         7: .line 1576
      StackMap locals:
      StackMap stack:
            aload 2 /* p */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* p */
      StackMap locals:
      StackMap stack:
         8: aload 2 /* p */
            ifnonnull 3
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         9: .line 1583
            aload 1 /* list */
            areturn
        end local 1 // java.util.ArrayList list
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            1   10     1  list  Ljava/util/ArrayList<Ljava/lang/Thread;>;
            2    9     2     p  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            5    7     3     t  Ljava/lang/Thread;
    Signature: ()Ljava/util/Collection<Ljava/lang/Thread;>;

  public final java.util.Collection<java.lang.Thread> getSharedQueuedThreads();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 1595
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* list */
        start local 1 // java.util.ArrayList list
         1: .line 1596
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* p */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         2: goto 8
         3: .line 1597
      StackMap locals: java.util.ArrayList java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 2 /* p */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.isShared:()Z
            ifeq 7
         4: .line 1598
            aload 2 /* p */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
            astore 3 /* t */
        start local 3 // java.lang.Thread t
         5: .line 1599
            aload 3 /* t */
            ifnull 7
         6: .line 1600
            aload 1 /* list */
            aload 3 /* t */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // java.lang.Thread t
         7: .line 1596
      StackMap locals:
      StackMap stack:
            aload 2 /* p */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* p */
      StackMap locals:
      StackMap stack:
         8: aload 2 /* p */
            ifnonnull 3
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         9: .line 1603
            aload 1 /* list */
            areturn
        end local 1 // java.util.ArrayList list
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            1   10     1  list  Ljava/util/ArrayList<Ljava/lang/Thread;>;
            2    9     2     p  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            5    7     3     t  Ljava/lang/Thread;
    Signature: ()Ljava/util/Collection<Ljava/lang/Thread;>;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
         0: .line 1616
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.getState:()I
            istore 1 /* s */
        start local 1 // int s
         1: .line 1617
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.hasQueuedThreads:()Z
            ifeq 2
            ldc "non"
            goto 3
      StackMap locals: int
      StackMap stack:
         2: ldc ""
      StackMap locals:
      StackMap stack: java.lang.String
         3: astore 2 /* q */
        start local 2 // java.lang.String q
         4: .line 1618
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokespecial java.lang.Object.toString:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         5: .line 1619
            ldc "[State = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 1 /* s */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* q */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "empty queue]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         6: .line 1618
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.String q
        end local 1 // int s
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            1    7     1     s  I
            4    7     2     q  Ljava/lang/String;

  final boolean isOnSyncQueue(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
    flags: (0x0010) ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         0: .line 1632
            aload 1 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            bipush -2
            if_icmpeq 1
            aload 1 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            ifnonnull 2
         1: .line 1633
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         2: .line 1634
      StackMap locals:
      StackMap stack:
            aload 1 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            ifnull 4
         3: .line 1635
            iconst_1
            ireturn
         4: .line 1644
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.findNodeFromTail:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ireturn
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    5     1  node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
      Name  Flags
      node  

  private boolean findNodeFromTail(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         0: .line 1653
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer.tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* t */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node t
         1: .line 1655
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 2 /* t */
            aload 1 /* node */
            if_acmpne 3
         2: .line 1656
            iconst_1
            ireturn
         3: .line 1657
      StackMap locals:
      StackMap stack:
            aload 2 /* t */
            ifnonnull 5
         4: .line 1658
            iconst_0
            ireturn
         5: .line 1659
      StackMap locals:
      StackMap stack:
            aload 2 /* t */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* t */
         6: .line 1654
            goto 1
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node t
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    7     1  node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            1    7     2     t  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
      Name  Flags
      node  

  final boolean transferForSignal(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
    flags: (0x0010) ACC_FINAL
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         0: .line 1674
            aload 1 /* node */
            bipush -2
            iconst_0
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetWaitStatus:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;II)Z
            ifne 2
         1: .line 1675
            iconst_0
            ireturn
         2: .line 1683
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.enq:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* p */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
         3: .line 1684
            aload 2 /* p */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            istore 3 /* ws */
        start local 3 // int ws
         4: .line 1685
            iload 3 /* ws */
            ifgt 5
            aload 2 /* p */
            iload 3 /* ws */
            iconst_m1
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetWaitStatus:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;II)Z
            ifne 6
         5: .line 1686
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack:
            aload 1 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
            invokestatic java.util.concurrent.locks.LockSupport.unpark:(Ljava/lang/Thread;)V
         6: .line 1687
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 3 // int ws
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node p
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    7     1  node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            3    7     2     p  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            4    7     3    ws  I
    MethodParameters:
      Name  Flags
      node  

  final boolean transferAfterCancelledWait(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
    flags: (0x0010) ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         0: .line 1698
            aload 1 /* node */
            bipush -2
            iconst_0
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetWaitStatus:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;II)Z
            ifeq 4
         1: .line 1699
            aload 0 /* this */
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.enq:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            pop
         2: .line 1700
            iconst_1
            ireturn
         3: .line 1709
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.Thread.yield:()V
         4: .line 1708
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isOnSyncQueue:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 3
         5: .line 1710
            iconst_0
            ireturn
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    6     1  node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
      Name  Flags
      node  

  final int fullyRelease(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
    flags: (0x0010) ACC_FINAL
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         0: .line 1720
            iconst_1
            istore 2 /* failed */
        start local 2 // boolean failed
         1: .line 1722
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.getState:()I
            istore 3 /* savedState */
        start local 3 // int savedState
         2: .line 1723
            aload 0 /* this */
            iload 3 /* savedState */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.release:(I)Z
            ifeq 8
         3: .line 1724
            iconst_0
            istore 2 /* failed */
         4: .line 1725
            iload 3 /* savedState */
            istore 5
         5: .line 1730
            iload 2 /* failed */
            ifeq 7
         6: .line 1731
            aload 1 /* node */
            iconst_1
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
         7: .line 1725
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int top int
      StackMap stack:
            iload 5
            ireturn
         8: .line 1727
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int
      StackMap stack:
            new java.lang.IllegalMonitorStateException
            dup
            invokespecial java.lang.IllegalMonitorStateException.<init>:()V
            athrow
        end local 3 // int savedState
         9: .line 1729
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int
      StackMap stack: java.lang.Throwable
            astore 4
        10: .line 1730
            iload 2 /* failed */
            ifeq 12
        11: .line 1731
            aload 1 /* node */
            iconst_1
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
        12: .line 1732
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int top java.lang.Throwable
      StackMap stack:
            aload 4
            athrow
        end local 2 // boolean failed
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0        this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0   13     1        node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            1   13     2      failed  Z
            2    9     3  savedState  I
      Exception table:
        from    to  target  type
           1     5       9  any
           8     9       9  any
    MethodParameters:
      Name  Flags
      node  

  public final boolean owns(java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject condition
         0: .line 1746
            aload 1 /* condition */
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.isOwnedBy:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)Z
            ireturn
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject condition
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    1     1  condition  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
    MethodParameters:
           Name  Flags
      condition  

  public final boolean hasWaiters(java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject condition
         0: .line 1766
            aload 0 /* this */
            aload 1 /* condition */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.owns:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z
            ifne 2
         1: .line 1767
            new java.lang.IllegalArgumentException
            dup
            ldc "Not owner"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 1768
      StackMap locals:
      StackMap stack:
            aload 1 /* condition */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.hasWaiters:()Z
            ireturn
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject condition
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    3     1  condition  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
    MethodParameters:
           Name  Flags
      condition  

  public final int getWaitQueueLength(java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject condition
         0: .line 1788
            aload 0 /* this */
            aload 1 /* condition */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.owns:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z
            ifne 2
         1: .line 1789
            new java.lang.IllegalArgumentException
            dup
            ldc "Not owner"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 1790
      StackMap locals:
      StackMap stack:
            aload 1 /* condition */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.getWaitQueueLength:()I
            ireturn
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject condition
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    3     1  condition  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
    MethodParameters:
           Name  Flags
      condition  

  public final java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Ljava/util/Collection;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject condition
         0: .line 1810
            aload 0 /* this */
            aload 1 /* condition */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.owns:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z
            ifne 2
         1: .line 1811
            new java.lang.IllegalArgumentException
            dup
            ldc "Not owner"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 1812
      StackMap locals:
      StackMap stack:
            aload 1 /* condition */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.getWaitingThreads:()Ljava/util/Collection;
            areturn
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject condition
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    3     1  condition  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
    Signature: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Ljava/util/Collection<Ljava/lang/Thread;>;
    MethodParameters:
           Name  Flags
      condition  

  private final boolean compareAndSetHead(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node update
         0: .line 2287
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.unsafe:Lsun/misc/Unsafe;
            aload 0 /* this */
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.headOffset:J
            aconst_null
            aload 1 /* update */
            invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node update
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    1     1  update  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
        Name  Flags
      update  

  private final boolean compareAndSetTail(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node, java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node expect
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node update
         0: .line 2294
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.unsafe:Lsun/misc/Unsafe;
            aload 0 /* this */
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.tailOffset:J
            aload 1 /* expect */
            aload 2 /* update */
            invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
            ireturn
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node update
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node expect
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            0    1     1  expect  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            0    1     2  update  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
        Name  Flags
      expect  
      update  

  private static final boolean compareAndSetWaitStatus(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node, int, int);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;II)Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        start local 1 // int expect
        start local 2 // int update
         0: .line 2303
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.unsafe:Lsun/misc/Unsafe;
            aload 0 /* node */
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.waitStatusOffset:J
         1: .line 2304
            iload 1 /* expect */
            iload 2 /* update */
         2: .line 2303
            invokevirtual sun.misc.Unsafe.compareAndSwapInt:(Ljava/lang/Object;JII)Z
            ireturn
        end local 2 // int update
        end local 1 // int expect
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            0    3     1  expect  I
            0    3     2  update  I
    MethodParameters:
        Name  Flags
      node    
      expect  
      update  

  private static final boolean compareAndSetNext(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node, java.util.concurrent.locks.AbstractQueuedSynchronizer$Node, java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node expect
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node update
         0: .line 2313
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.unsafe:Lsun/misc/Unsafe;
            aload 0 /* node */
            getstatic java.util.concurrent.locks.AbstractQueuedSynchronizer.nextOffset:J
            aload 1 /* expect */
            aload 2 /* update */
            invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
            ireturn
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node update
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node expect
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            0    1     1  expect  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            0    1     2  update  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
        Name  Flags
      node    
      expect  
      update  
}
SourceFile: "AbstractQueuedSynchronizer.java"
NestMembers:
  java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject  java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
InnerClasses:
  public ConditionObject = java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject of java.util.concurrent.locks.AbstractQueuedSynchronizer
  final Node = java.util.concurrent.locks.AbstractQueuedSynchronizer$Node of java.util.concurrent.locks.AbstractQueuedSynchronizer