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 1878
            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=3, locals=3, args_size=1
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
         0: .line 1887
            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 1888
            new java.lang.IllegalMonitorStateException
            dup
            invokespecial java.lang.IllegalMonitorStateException.<init>:()V
            athrow
         2: .line 1889
      StackMap locals:
      StackMap stack:
            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
         3: .line 1891
            aload 1 /* t */
            ifnull 6
            aload 1 /* t */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            bipush -2
            if_icmpeq 6
         4: .line 1892
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
         5: .line 1893
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 1 /* t */
         6: .line 1896
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
      StackMap stack:
            new java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
            dup
            bipush -2
            invokespecial java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.<init>:(I)V
            astore 2 /* node */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         7: .line 1898
            aload 1 /* t */
            ifnonnull 9
         8: .line 1899
            aload 0 /* this */
            aload 2 /* node */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            goto 10
         9: .line 1901
      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;
        10: .line 1902
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* node */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
        11: .line 1903
            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   12     0  this  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
            3   12     1     t  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            7   12     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 1914
      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 1915
            aload 0 /* this */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         2: .line 1916
      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 1917
            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 1918
            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 1919
      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 1926
            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 1928
      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 1929
            aload 1 /* first */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         3: .line 1930
            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 1931
            aload 2 /* next */
            astore 1 /* first */
        end local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node next
         5: .line 1932
            aload 1 /* first */
            ifnonnull 1
         6: .line 1933
            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 1950
            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 1951
            aconst_null
            astore 2 /* trail */
        start local 2 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node trail
         2: .line 1952
            goto 14
         3: .line 1953
      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 1954
            aload 1 /* t */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
            bipush -2
            if_icmpeq 12
         5: .line 1955
            aload 1 /* t */
            aconst_null
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
         6: .line 1956
            aload 2 /* trail */
            ifnonnull 8
         7: .line 1957
            aload 0 /* this */
            aload 3 /* next */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            goto 9
         8: .line 1959
      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 1960
      StackMap locals:
      StackMap stack:
            aload 3 /* next */
            ifnonnull 13
        10: .line 1961
            aload 0 /* this */
            aload 2 /* trail */
            putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
        11: .line 1962
            goto 13
        12: .line 1964
      StackMap locals:
      StackMap stack:
            aload 1 /* t */
            astore 2 /* trail */
        13: .line 1965
      StackMap locals:
      StackMap stack:
            aload 3 /* next */
            astore 1 /* t */
        end local 3 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node next
        14: .line 1952
      StackMap locals:
      StackMap stack:
            aload 1 /* t */
            ifnonnull 3
        15: .line 1967
            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 1980
            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 1981
            new java.lang.IllegalMonitorStateException
            dup
            invokespecial java.lang.IllegalMonitorStateException.<init>:()V
            athrow
         2: .line 1982
      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 1983
            aload 1 /* first */
            ifnull 5
         4: .line 1984
            aload 0 /* this */
            aload 1 /* first */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.doSignal:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
         5: .line 1985
      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 1995
            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 1996
            new java.lang.IllegalMonitorStateException
            dup
            invokespecial java.lang.IllegalMonitorStateException.<init>:()V
            athrow
         2: .line 1997
      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 1998
            aload 1 /* first */
            ifnull 5
         4: .line 1999
            aload 0 /* this */
            aload 1 /* first */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.doSignalAll:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
         5: .line 2000
      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 2014
            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 2015
            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 2016
            iconst_0
            istore 3 /* interrupted */
        start local 3 // boolean interrupted
         3: .line 2017
            goto 7
         4: .line 2018
      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 2019
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 7
         6: .line 2020
            iconst_1
            istore 3 /* interrupted */
         7: .line 2017
      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 2022
            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 2023
      StackMap locals:
      StackMap stack:
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.selfInterrupt:()V
        10: .line 2024
      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 2044
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 3
         1: .line 2045
            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 2046
      StackMap locals:
      StackMap stack:
            iconst_0
         4: .line 2044
      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 2055
            iload 1 /* interruptMode */
            iconst_m1
            if_icmpne 2
         1: .line 2056
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         2: .line 2057
      StackMap locals:
      StackMap stack:
            iload 1 /* interruptMode */
            iconst_1
            if_icmpne 4
         3: .line 2058
            invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.selfInterrupt:()V
         4: .line 2059
      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 2075
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 2
         1: .line 2076
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         2: .line 2077
      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 2078
            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 2079
            iconst_0
            istore 3 /* interruptMode */
        start local 3 // int interruptMode
         5: .line 2080
            goto 9
         6: .line 2081
      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 2082
            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 2083
            goto 10
         9: .line 2080
      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 2085
      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 2086
            iconst_1
            istore 3 /* interruptMode */
        12: .line 2087
      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 2088
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
        14: .line 2089
      StackMap locals:
      StackMap stack:
            iload 3 /* interruptMode */
            ifeq 16
        15: .line 2090
            aload 0 /* this */
            iload 3 /* interruptMode */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait:(I)V
        16: .line 2091
      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=12, args_size=2
        start local 0 // java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject this
        start local 1 // long nanosTimeout
         0: .line 2108
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 2
         1: .line 2109
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         2: .line 2112
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.nanoTime:()J
            lload 1 /* nanosTimeout */
            ladd
            lstore 3 /* deadline */
        start local 3 // long deadline
         3: .line 2113
            lload 1 /* nanosTimeout */
            lstore 5 /* initialNanos */
        start local 5 // long initialNanos
         4: .line 2114
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 7 /* node */
        start local 7 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         5: .line 2115
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 7 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.fullyRelease:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
            istore 8 /* savedState */
        start local 8 // int savedState
         6: .line 2116
            iconst_0
            istore 9 /* interruptMode */
        start local 9 // int interruptMode
         7: .line 2117
            goto 16
         8: .line 2118
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject long long long java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int
      StackMap stack:
            lload 1 /* nanosTimeout */
            lconst_0
            lcmp
            ifgt 11
         9: .line 2119
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 7 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.transferAfterCancelledWait:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            pop
        10: .line 2120
            goto 17
        11: .line 2122
      StackMap locals:
      StackMap stack:
            lload 1 /* nanosTimeout */
            ldc 1000
            lcmp
            ifle 13
        12: .line 2123
            aload 0 /* this */
            lload 1 /* nanosTimeout */
            invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(Ljava/lang/Object;J)V
        13: .line 2124
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 7 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.checkInterruptWhileWaiting:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
            dup
            istore 9 /* interruptMode */
            ifeq 15
        14: .line 2125
            goto 17
        15: .line 2126
      StackMap locals:
      StackMap stack:
            lload 3 /* deadline */
            invokestatic java.lang.System.nanoTime:()J
            lsub
            lstore 1 /* nanosTimeout */
        16: .line 2117
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 7 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isOnSyncQueue:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 8
        17: .line 2128
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 7 /* node */
            iload 8 /* savedState */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
            ifeq 19
            iload 9 /* interruptMode */
            iconst_m1
            if_icmpeq 19
        18: .line 2129
            iconst_1
            istore 9 /* interruptMode */
        19: .line 2130
      StackMap locals:
      StackMap stack:
            aload 7 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            ifnull 21
        20: .line 2131
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
        21: .line 2132
      StackMap locals:
      StackMap stack:
            iload 9 /* interruptMode */
            ifeq 23
        22: .line 2133
            aload 0 /* this */
            iload 9 /* interruptMode */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait:(I)V
        23: .line 2134
      StackMap locals:
      StackMap stack:
            lload 3 /* deadline */
            invokestatic java.lang.System.nanoTime:()J
            lsub
            lstore 10 /* remaining */
        start local 10 // long remaining
        24: .line 2135
            lload 10 /* remaining */
            lload 5 /* initialNanos */
            lcmp
            ifgt 25
            lload 10 /* remaining */
            goto 26
      StackMap locals: long
      StackMap stack:
        25: ldc -9223372036854775808
      StackMap locals:
      StackMap stack: long
        26: lreturn
        end local 10 // long remaining
        end local 9 // int interruptMode
        end local 8 // int savedState
        end local 7 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 5 // long initialNanos
        end local 3 // long deadline
        end local 1 // long nanosTimeout
        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   nanosTimeout  J
            3   27     3       deadline  J
            4   27     5   initialNanos  J
            5   27     7           node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            6   27     8     savedState  I
            7   27     9  interruptMode  I
           24   27    10      remaining  J
    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 2154
            aload 1 /* deadline */
            invokevirtual java.util.Date.getTime:()J
            lstore 2 /* abstime */
        start local 2 // long abstime
         1: .line 2155
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 3
         2: .line 2156
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         3: .line 2157
      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 2158
            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 2159
            iconst_0
            istore 6 /* timedout */
        start local 6 // boolean timedout
         6: .line 2160
            iconst_0
            istore 7 /* interruptMode */
        start local 7 // int interruptMode
         7: .line 2161
            goto 14
         8: .line 2162
      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
            iflt 11
         9: .line 2163
            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 2164
            goto 15
        11: .line 2166
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 2 /* abstime */
            invokestatic java.util.concurrent.locks.LockSupport.parkUntil:(Ljava/lang/Object;J)V
        12: .line 2167
            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 2168
            goto 15
        14: .line 2161
      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 2170
      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 2171
            iconst_1
            istore 7 /* interruptMode */
        17: .line 2172
      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 2173
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
        19: .line 2174
      StackMap locals:
      StackMap stack:
            iload 7 /* interruptMode */
            ifeq 21
        20: .line 2175
            aload 0 /* this */
            iload 7 /* interruptMode */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait:(I)V
        21: .line 2176
      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 2195
            aload 3 /* unit */
            lload 1 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lstore 4 /* nanosTimeout */
        start local 4 // long nanosTimeout
         1: .line 2196
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 3
         2: .line 2197
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         3: .line 2200
      StackMap locals: long
      StackMap stack:
            invokestatic java.lang.System.nanoTime:()J
            lload 4 /* nanosTimeout */
            ladd
            lstore 6 /* deadline */
        start local 6 // long deadline
         4: .line 2201
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            astore 8 /* node */
        start local 8 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
         5: .line 2202
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 8 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.fullyRelease:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
            istore 9 /* savedState */
        start local 9 // int savedState
         6: .line 2203
            iconst_0
            istore 10 /* timedout */
        start local 10 // boolean timedout
         7: .line 2204
            iconst_0
            istore 11 /* interruptMode */
        start local 11 // int interruptMode
         8: .line 2205
            goto 17
         9: .line 2206
      StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject long java.util.concurrent.TimeUnit long long java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int int
      StackMap stack:
            lload 4 /* nanosTimeout */
            lconst_0
            lcmp
            ifgt 12
        10: .line 2207
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 8 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.transferAfterCancelledWait:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            istore 10 /* timedout */
        11: .line 2208
            goto 18
        12: .line 2210
      StackMap locals:
      StackMap stack:
            lload 4 /* nanosTimeout */
            ldc 1000
            lcmp
            ifle 14
        13: .line 2211
            aload 0 /* this */
            lload 4 /* nanosTimeout */
            invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(Ljava/lang/Object;J)V
        14: .line 2212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.checkInterruptWhileWaiting:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
            dup
            istore 11 /* interruptMode */
            ifeq 16
        15: .line 2213
            goto 18
        16: .line 2214
      StackMap locals:
      StackMap stack:
            lload 6 /* deadline */
            invokestatic java.lang.System.nanoTime:()J
            lsub
            lstore 4 /* nanosTimeout */
        17: .line 2205
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 8 /* node */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isOnSyncQueue:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
            ifeq 9
        18: .line 2216
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
            aload 8 /* node */
            iload 9 /* 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 2217
            iconst_1
            istore 11 /* interruptMode */
        20: .line 2218
      StackMap locals:
      StackMap stack:
            aload 8 /* node */
            getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            ifnull 22
        21: .line 2219
            aload 0 /* this */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
        22: .line 2220
      StackMap locals:
      StackMap stack:
            iload 11 /* interruptMode */
            ifeq 24
        23: .line 2221
            aload 0 /* this */
            iload 11 /* interruptMode */
            invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait:(I)V
        24: .line 2222
      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 9 // int savedState
        end local 8 // java.util.concurrent.locks.AbstractQueuedSynchronizer$Node node
        end local 6 // long deadline
        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       deadline  J
            5   27     8           node  Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
            6   27     9     savedState  I
            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 2234
            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 2246
            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 2247
            new java.lang.IllegalMonitorStateException
            dup
            invokespecial java.lang.IllegalMonitorStateException.<init>:()V
            athrow
         2: .line 2248
      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 2249
      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 2250
            iconst_1
            ireturn
         6: .line 2248
      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 2252
            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 2265
            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 2266
            new java.lang.IllegalMonitorStateException
            dup
            invokespecial java.lang.IllegalMonitorStateException.<init>:()V
            athrow
         2: .line 2267
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* n */
        start local 1 // int n
         3: .line 2268
            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 2269
      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 2270
            iinc 1 /* n */ 1
         7: .line 2268
      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 2272
            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 2285
            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 2286
            new java.lang.IllegalMonitorStateException
            dup
            invokespecial java.lang.IllegalMonitorStateException.<init>:()V
            athrow
         2: .line 2287
      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 2288
            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 2289
      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 2290
            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 2291
            aload 3 /* t */
            ifnull 9
         8: .line 2292
            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 2288
      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 2295
            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