public class java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject implements java.util.concurrent.locks.Condition, java.io.Serializable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject
  super_class: java.lang.Object
{
  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1173984872572414699

  private transient java.util.concurrent.locks.AbstractQueuedSynchronizer$Node firstWaiter;
    descriptor: Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT

  private transient java.util.concurrent.locks.AbstractQueuedSynchronizer$Node lastWaiter;
    descriptor: Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT

  private static final int REINTERRUPT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final int THROW_IE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  final java.util.concurrent.locks.AbstractQueuedSynchronizer this$0;
    descriptor: Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  public void <init>(java.util.concurrent.locks.AbstractQueuedSynchronizer);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
         0: .line 1840
            aload 0 /* this */
            aload 1
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
    MethodParameters:
        Name  Flags
      this$0  final

  private java.util.concurrent.locks.AbstractQueuedSynchronizer$Node addConditionWaiter();
    descriptor: ()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
         0: .line 1849
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 1 /* t */
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node t
         1: .line 1851
            aload 1 /* t */
            ifnull 4
            aload 1 /* t */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            bipush -2
            if_icmpeq 4
         2: .line 1852
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
         3: .line 1853
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 1 /* t */
         4: .line 1855
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            new java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
            dup
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            bipush -2
            invokespecial java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.<init>:(Ljava/lang/Thread;I)V
            astore 2 /* node */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         5: .line 1856
            aload 1 /* t */
            ifnonnull 7
         6: .line 1857
            aload 0 /* this */
            aload 2 /* node */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            goto 8
         7: .line 1859
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 1 /* t */
            aload 2 /* node */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         8: .line 1860
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* node */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         9: .line 1861
            aload 2 /* node */
            areturn
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node t
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            1   10     1     t  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            5   10     2  node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;

  private void doSignal(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node first
         0: .line 1872
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* first */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            dup_x1
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            ifnonnull 2
         1: .line 1873
            aload 0 /* this */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         2: .line 1874
      StackMap locals:
      StackMap stack:
            aload 1 /* first */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         3: .line 1875
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 1 /* first */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.transferForSignal:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifne 5
         4: .line 1876
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            dup
            astore 1 /* first */
            ifnonnull 0
         5: .line 1877
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node first
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            0    6     1  first  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
       Name  Flags
      first  

  private void doSignalAll(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node first
         0: .line 1884
            aload 0 /* this */
            aload 0 /* this */
            aconst_null
            dup_x1
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         1: .line 1886
      StackMap locals:
      StackMap stack:
            aload 1 /* first */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* next */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node next
         2: .line 1887
            aload 1 /* first */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         3: .line 1888
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 1 /* first */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.transferForSignal:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            pop
         4: .line 1889
            aload 2 /* next */
            astore 1 /* first */
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node next
         5: .line 1890
            aload 1 /* first */
            ifnonnull 1
         6: .line 1891
            return
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node first
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            0    7     1  first  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            2    5     2   next  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
       Name  Flags
      first  

  private void unlinkCancelledWaiters();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
         0: .line 1908
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 1 /* t */
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node t
         1: .line 1909
            aconst_null
            astore 2 /* trail */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node trail
         2: .line 1910
            goto 14
         3: .line 1911
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 1 /* t */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 3 /* next */
        start local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node next
         4: .line 1912
            aload 1 /* t */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            bipush -2
            if_icmpeq 12
         5: .line 1913
            aload 1 /* t */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         6: .line 1914
            aload 2 /* trail */
            ifnonnull 8
         7: .line 1915
            aload 0 /* this */
            aload 3 /* next */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            goto 9
         8: .line 1917
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 2 /* trail */
            aload 3 /* next */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         9: .line 1918
      StackMap locals:
      StackMap stack:
            aload 3 /* next */
            ifnonnull 13
        10: .line 1919
            aload 0 /* this */
            aload 2 /* trail */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
        11: .line 1920
            goto 13
        12: .line 1922
      StackMap locals:
      StackMap stack:
            aload 1 /* t */
            astore 2 /* trail */
        13: .line 1923
      StackMap locals:
      StackMap stack:
            aload 3 /* next */
            astore 1 /* t */
        end local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node next
        14: .line 1910
      StackMap locals:
      StackMap stack:
            aload 1 /* t */
            ifnonnull 3
        15: .line 1925
            return
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node trail
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node t
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   16     0   this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            1   16     1      t  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            2   16     2  trail  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            4   14     3   next  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;

  public final void signal();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
         0: .line 1938
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isHeldExclusively:()Z
            ifne 2
         1: .line 1939
            new java.lang.IllegalMonitorStateException
            dup
            invokespecial java.lang.IllegalMonitorStateException.<init>:()V
            athrow
         2: .line 1940
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 1 /* first */
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node first
         3: .line 1941
            aload 1 /* first */
            ifnull 5
         4: .line 1942
            aload 0 /* this */
            aload 1 /* first */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.doSignal:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
         5: .line 1943
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            return
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node first
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            3    6     1  first  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;

  public final void signalAll();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
         0: .line 1953
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isHeldExclusively:()Z
            ifne 2
         1: .line 1954
            new java.lang.IllegalMonitorStateException
            dup
            invokespecial java.lang.IllegalMonitorStateException.<init>:()V
            athrow
         2: .line 1955
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 1 /* first */
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node first
         3: .line 1956
            aload 1 /* first */
            ifnull 5
         4: .line 1957
            aload 0 /* this */
            aload 1 /* first */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.doSignalAll:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
         5: .line 1958
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            return
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node first
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            3    6     1  first  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;

  public final void awaitUninterruptibly();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
         0: .line 1972
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 1 /* node */
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         1: .line 1973
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.fullyRelease:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
            istore 2 /* savedState */
        start local 2 // int savedState
         2: .line 1974
            iconst_0
            istore 3 /* interrupted */
        start local 3 // boolean interrupted
         3: .line 1975
            goto 7
         4: .line 1976
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int
      StackMap stack:
            aload 0 /* this */
            invokestatic java.util.concurrent.locks.LockSupport.park:(Ljava/lang/Object;)V
         5: .line 1977
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 7
         6: .line 1978
            iconst_1
            istore 3 /* interrupted */
         7: .line 1975
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isOnSyncQueue:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 4
         8: .line 1980
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 1 /* node */
            iload 2 /* savedState */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
            ifne 9
            iload 3 /* interrupted */
            ifeq 10
         9: .line 1981
      StackMap locals:
      StackMap stack:
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.selfInterrupt:()V
        10: .line 1982
      StackMap locals:
      StackMap stack:
            return
        end local 3 // boolean interrupted
        end local 2 // int savedState
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   11     0         this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            1   11     1         node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            2   11     2   savedState  I
            3   11     3  interrupted  Z

  private int checkInterruptWhileWaiting(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         0: .line 2002
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 3
         1: .line 2003
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.transferAfterCancelledWait:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 2
            iconst_m1
            goto 4
      StackMap locals:
      StackMap stack:
         2: iconst_1
            goto 4
         3: .line 2004
      StackMap locals:
      StackMap stack:
            iconst_0
         4: .line 2002
      StackMap locals:
      StackMap stack: int
            ireturn
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            0    5     1  node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
    MethodParameters:
      Name  Flags
      node  

  private void reportInterruptAfterWait(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
        start local 1 // int interruptMode
         0: .line 2013
            iload 1 /* interruptMode */
            iconst_m1
            if_icmpne 2
         1: .line 2014
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         2: .line 2015
      StackMap locals:
      StackMap stack:
            iload 1 /* interruptMode */
            iconst_1
            if_icmpne 4
         3: .line 2016
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.selfInterrupt:()V
         4: .line 2017
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int interruptMode
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            0    5     1  interruptMode  I
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
               Name  Flags
      interruptMode  

  public final void await();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
         0: .line 2033
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 2
         1: .line 2034
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         2: .line 2035
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 1 /* node */
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         3: .line 2036
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.fullyRelease:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
            istore 2 /* savedState */
        start local 2 // int savedState
         4: .line 2037
            iconst_0
            istore 3 /* interruptMode */
        start local 3 // int interruptMode
         5: .line 2038
            goto 9
         6: .line 2039
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int
      StackMap stack:
            aload 0 /* this */
            invokestatic java.util.concurrent.locks.LockSupport.park:(Ljava/lang/Object;)V
         7: .line 2040
            aload 0 /* this */
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.checkInterruptWhileWaiting:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
            dup
            istore 3 /* interruptMode */
            ifeq 9
         8: .line 2041
            goto 10
         9: .line 2038
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 1 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isOnSyncQueue:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 6
        10: .line 2043
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 1 /* node */
            iload 2 /* savedState */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
            ifeq 12
            iload 3 /* interruptMode */
            iconst_m1
            if_icmpeq 12
        11: .line 2044
            iconst_1
            istore 3 /* interruptMode */
        12: .line 2045
      StackMap locals:
      StackMap stack:
            aload 1 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            ifnull 14
        13: .line 2046
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
        14: .line 2047
      StackMap locals:
      StackMap stack:
            iload 3 /* interruptMode */
            ifeq 16
        15: .line 2048
            aload 0 /* this */
            iload 3 /* interruptMode */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait:(I)V
        16: .line 2049
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int interruptMode
        end local 2 // int savedState
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   17     0           this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            3   17     1           node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            4   17     2     savedState  I
            5   17     3  interruptMode  I
    Exceptions:
      throws java.lang.InterruptedException

  public final long awaitNanos(long);
    descriptor: (J)J
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
        start local 1 // long nanosTimeout
         0: .line 2066
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 2
         1: .line 2067
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         2: .line 2068
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 3 /* node */
        start local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         3: .line 2069
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 3 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.fullyRelease:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
            istore 4 /* savedState */
        start local 4 // int savedState
         4: .line 2070
            invokestatic java.lang.System.nanoTime:()J
            lload 1 /* nanosTimeout */
            ladd
            lstore 5 /* deadline */
        start local 5 // long deadline
         5: .line 2071
            iconst_0
            istore 7 /* interruptMode */
        start local 7 // int interruptMode
         6: .line 2072
            goto 15
         7: .line 2073
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject long java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int long int
      StackMap stack:
            lload 1 /* nanosTimeout */
            lconst_0
            lcmp
            ifgt 10
         8: .line 2074
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 3 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.transferAfterCancelledWait:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            pop
         9: .line 2075
            goto 16
        10: .line 2077
      StackMap locals:
      StackMap stack:
            lload 1 /* nanosTimeout */
            ldc 1000
            lcmp
            iflt 12
        11: .line 2078
            aload 0 /* this */
            lload 1 /* nanosTimeout */
            invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(Ljava/lang/Object;J)V
        12: .line 2079
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.checkInterruptWhileWaiting:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
            dup
            istore 7 /* interruptMode */
            ifeq 14
        13: .line 2080
            goto 16
        14: .line 2081
      StackMap locals:
      StackMap stack:
            lload 5 /* deadline */
            invokestatic java.lang.System.nanoTime:()J
            lsub
            lstore 1 /* nanosTimeout */
        15: .line 2072
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 3 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isOnSyncQueue:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 7
        16: .line 2083
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 3 /* node */
            iload 4 /* savedState */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
            ifeq 18
            iload 7 /* interruptMode */
            iconst_m1
            if_icmpeq 18
        17: .line 2084
            iconst_1
            istore 7 /* interruptMode */
        18: .line 2085
      StackMap locals:
      StackMap stack:
            aload 3 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            ifnull 20
        19: .line 2086
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
        20: .line 2087
      StackMap locals:
      StackMap stack:
            iload 7 /* interruptMode */
            ifeq 22
        21: .line 2088
            aload 0 /* this */
            iload 7 /* interruptMode */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait:(I)V
        22: .line 2089
      StackMap locals:
      StackMap stack:
            lload 5 /* deadline */
            invokestatic java.lang.System.nanoTime:()J
            lsub
            lreturn
        end local 7 // int interruptMode
        end local 5 // long deadline
        end local 4 // int savedState
        end local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 1 // long nanosTimeout
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   23     0           this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            0   23     1   nanosTimeout  J
            3   23     3           node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            4   23     4     savedState  I
            5   23     5       deadline  J
            6   23     7  interruptMode  I
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
              Name  Flags
      nanosTimeout  

  public final boolean awaitUntil(java.util.Date);
    descriptor: (Ljava/util/Date;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
        start local 1 // java.util.Date deadline
         0: .line 2108
            aload 1 /* deadline */
            invokevirtual java.util.Date.getTime:()J
            lstore 2 /* abstime */
        start local 2 // long abstime
         1: .line 2109
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 3
         2: .line 2110
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         3: .line 2111
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 4 /* node */
        start local 4 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         4: .line 2112
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 4 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.fullyRelease:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
            istore 5 /* savedState */
        start local 5 // int savedState
         5: .line 2113
            iconst_0
            istore 6 /* timedout */
        start local 6 // boolean timedout
         6: .line 2114
            iconst_0
            istore 7 /* interruptMode */
        start local 7 // int interruptMode
         7: .line 2115
            goto 14
         8: .line 2116
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject java.util.Date long java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int int
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            lload 2 /* abstime */
            lcmp
            ifle 11
         9: .line 2117
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 4 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.transferAfterCancelledWait:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            istore 6 /* timedout */
        10: .line 2118
            goto 15
        11: .line 2120
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 2 /* abstime */
            invokestatic java.util.concurrent.locks.LockSupport.parkUntil:(Ljava/lang/Object;J)V
        12: .line 2121
            aload 0 /* this */
            aload 4 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.checkInterruptWhileWaiting:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
            dup
            istore 7 /* interruptMode */
            ifeq 14
        13: .line 2122
            goto 15
        14: .line 2115
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 4 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isOnSyncQueue:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 8
        15: .line 2124
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 4 /* node */
            iload 5 /* savedState */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
            ifeq 17
            iload 7 /* interruptMode */
            iconst_m1
            if_icmpeq 17
        16: .line 2125
            iconst_1
            istore 7 /* interruptMode */
        17: .line 2126
      StackMap locals:
      StackMap stack:
            aload 4 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            ifnull 19
        18: .line 2127
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
        19: .line 2128
      StackMap locals:
      StackMap stack:
            iload 7 /* interruptMode */
            ifeq 21
        20: .line 2129
            aload 0 /* this */
            iload 7 /* interruptMode */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait:(I)V
        21: .line 2130
      StackMap locals:
      StackMap stack:
            iload 6 /* timedout */
            ifeq 22
            iconst_0
            goto 23
      StackMap locals:
      StackMap stack:
        22: iconst_1
      StackMap locals:
      StackMap stack: int
        23: ireturn
        end local 7 // int interruptMode
        end local 6 // boolean timedout
        end local 5 // int savedState
        end local 4 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 2 // long abstime
        end local 1 // java.util.Date deadline
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   24     0           this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            0   24     1       deadline  Ljava/util/Date;
            1   24     2        abstime  J
            4   24     4           node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            5   24     5     savedState  I
            6   24     6       timedout  Z
            7   24     7  interruptMode  I
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
          Name  Flags
      deadline  

  public final boolean await(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=12, args_size=3
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
        start local 1 // long time
        start local 3 // java.util.concurrent.TimeUnit unit
         0: .line 2149
            aload 3 /* unit */
            lload 1 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lstore 4 /* nanosTimeout */
        start local 4 // long nanosTimeout
         1: .line 2150
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 3
         2: .line 2151
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         3: .line 2152
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 6 /* node */
        start local 6 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         4: .line 2153
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 6 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.fullyRelease:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
            istore 7 /* savedState */
        start local 7 // int savedState
         5: .line 2154
            invokestatic java.lang.System.nanoTime:()J
            lload 4 /* nanosTimeout */
            ladd
            lstore 8 /* deadline */
        start local 8 // long deadline
         6: .line 2155
            iconst_0
            istore 10 /* timedout */
        start local 10 // boolean timedout
         7: .line 2156
            iconst_0
            istore 11 /* interruptMode */
        start local 11 // int interruptMode
         8: .line 2157
            goto 17
         9: .line 2158
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject long java.util.concurrent.TimeUnit long java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int long int int
      StackMap stack:
            lload 4 /* nanosTimeout */
            lconst_0
            lcmp
            ifgt 12
        10: .line 2159
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 6 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.transferAfterCancelledWait:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            istore 10 /* timedout */
        11: .line 2160
            goto 18
        12: .line 2162
      StackMap locals:
      StackMap stack:
            lload 4 /* nanosTimeout */
            ldc 1000
            lcmp
            iflt 14
        13: .line 2163
            aload 0 /* this */
            lload 4 /* nanosTimeout */
            invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(Ljava/lang/Object;J)V
        14: .line 2164
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 6 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.checkInterruptWhileWaiting:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
            dup
            istore 11 /* interruptMode */
            ifeq 16
        15: .line 2165
            goto 18
        16: .line 2166
      StackMap locals:
      StackMap stack:
            lload 8 /* deadline */
            invokestatic java.lang.System.nanoTime:()J
            lsub
            lstore 4 /* nanosTimeout */
        17: .line 2157
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 6 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isOnSyncQueue:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 9
        18: .line 2168
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 6 /* node */
            iload 7 /* savedState */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
            ifeq 20
            iload 11 /* interruptMode */
            iconst_m1
            if_icmpeq 20
        19: .line 2169
            iconst_1
            istore 11 /* interruptMode */
        20: .line 2170
      StackMap locals:
      StackMap stack:
            aload 6 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            ifnull 22
        21: .line 2171
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
        22: .line 2172
      StackMap locals:
      StackMap stack:
            iload 11 /* interruptMode */
            ifeq 24
        23: .line 2173
            aload 0 /* this */
            iload 11 /* interruptMode */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait:(I)V
        24: .line 2174
      StackMap locals:
      StackMap stack:
            iload 10 /* timedout */
            ifeq 25
            iconst_0
            goto 26
      StackMap locals:
      StackMap stack:
        25: iconst_1
      StackMap locals:
      StackMap stack: int
        26: ireturn
        end local 11 // int interruptMode
        end local 10 // boolean timedout
        end local 8 // long deadline
        end local 7 // int savedState
        end local 6 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 4 // long nanosTimeout
        end local 3 // java.util.concurrent.TimeUnit unit
        end local 1 // long time
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   27     0           this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            0   27     1           time  J
            0   27     3           unit  Ljava/util/concurrent/TimeUnit;
            1   27     4   nanosTimeout  J
            4   27     6           node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            5   27     7     savedState  I
            6   27     8       deadline  J
            7   27    10       timedout  Z
            8   27    11  interruptMode  I
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
      Name  Flags
      time  
      unit  

  final boolean isOwnedBy(java.util.concurrent.locks.AbstractQueuedSynchronizer);
    descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)Z
    flags: (0x0010) ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer sync
         0: .line 2186
            aload 1 /* sync */
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer sync
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            0    2     1  sync  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
    MethodParameters:
      Name  Flags
      sync  

  protected final boolean hasWaiters();
    descriptor: ()Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
         0: .line 2198
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isHeldExclusively:()Z
            ifne 2
         1: .line 2199
            new java.lang.IllegalMonitorStateException
            dup
            invokespecial java.lang.IllegalMonitorStateException.<init>:()V
            athrow
         2: .line 2200
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 1 /* w */
        start local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node w
         3: goto 7
         4: .line 2201
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 1 /* w */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            bipush -2
            if_icmpne 6
         5: .line 2202
            iconst_1
            ireturn
         6: .line 2200
      StackMap locals:
      StackMap stack:
            aload 1 /* w */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 1 /* w */
      StackMap locals:
      StackMap stack:
         7: aload 1 /* w */
            ifnonnull 4
        end local 1 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node w
         8: .line 2204
            iconst_0
            ireturn
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            3    8     1     w  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;

  protected final int getWaitQueueLength();
    descriptor: ()I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
         0: .line 2217
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isHeldExclusively:()Z
            ifne 2
         1: .line 2218
            new java.lang.IllegalMonitorStateException
            dup
            invokespecial java.lang.IllegalMonitorStateException.<init>:()V
            athrow
         2: .line 2219
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* n */
        start local 1 // int n
         3: .line 2220
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* w */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node w
         4: goto 8
         5: .line 2221
      StackMap locals: int java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 2 /* w */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            bipush -2
            if_icmpne 7
         6: .line 2222
            iinc 1 /* n */ 1
         7: .line 2220
      StackMap locals:
      StackMap stack:
            aload 2 /* w */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* w */
      StackMap locals:
      StackMap stack:
         8: aload 2 /* w */
            ifnonnull 5
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node w
         9: .line 2224
            iload 1 /* n */
            ireturn
        end local 1 // int n
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            3   10     1     n  I
            4    9     2     w  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;

  protected final java.util.Collection<java.lang.Thread> getWaitingThreads();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
         0: .line 2237
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isHeldExclusively:()Z
            ifne 2
         1: .line 2238
            new java.lang.IllegalMonitorStateException
            dup
            invokespecial java.lang.IllegalMonitorStateException.<init>:()V
            athrow
         2: .line 2239
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* list */
        start local 1 // java.util.ArrayList list
         3: .line 2240
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* w */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node w
         4: goto 10
         5: .line 2241
      StackMap locals: java.util.ArrayList java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            aload 2 /* w */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            bipush -2
            if_icmpne 9
         6: .line 2242
            aload 2 /* w */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
            astore 3 /* t */
        start local 3 // java.lang.Thread t
         7: .line 2243
            aload 3 /* t */
            ifnull 9
         8: .line 2244
            aload 1 /* list */
            aload 3 /* t */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // java.lang.Thread t
         9: .line 2240
      StackMap locals:
      StackMap stack:
            aload 2 /* w */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 2 /* w */
      StackMap locals:
      StackMap stack:
        10: aload 2 /* w */
            ifnonnull 5
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node w
        11: .line 2247
            aload 1 /* list */
            areturn
        end local 1 // java.util.ArrayList list
        end local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            3   12     1  list  Ljava/util/ArrayList<Ljava/lang/Thread;>;
            4   11     2     w  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            7    9     3     t  Ljava/lang/Thread;
    Signature: ()Ljava/util/Collection<Ljava/lang/Thread;>;
}
SourceFile: "AbstractQueuedSynchronizer.java"
NestHost: java.util.concurrent.locks.AbstractQueuedSynchronizer
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