final class java.util.concurrent.SynchronousQueue$TransferQueue<E> extends java.util.concurrent.SynchronousQueue$Transferer<E>
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: java.util.concurrent.SynchronousQueue$TransferQueue
  super_class: java.util.concurrent.SynchronousQueue$Transferer
{
  volatile transient java.util.concurrent.SynchronousQueue$TransferQueue$QNode head;
    descriptor: Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
    flags: (0x00c0) ACC_VOLATILE, ACC_TRANSIENT

  volatile transient java.util.concurrent.SynchronousQueue$TransferQueue$QNode tail;
    descriptor: Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
    flags: (0x00c0) ACC_VOLATILE, ACC_TRANSIENT

  volatile transient java.util.concurrent.SynchronousQueue$TransferQueue$QNode cleanMe;
    descriptor: Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
    flags: (0x00c0) ACC_VOLATILE, ACC_TRANSIENT

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

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

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

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 828
            invokestatic sun.misc.Unsafe.getUnsafe:()Lsun/misc/Unsafe;
            putstatic java.util.concurrent.SynchronousQueue$TransferQueue.UNSAFE:Lsun/misc/Unsafe;
         1: .line 829
            ldc Ljava/util/concurrent/SynchronousQueue$TransferQueue;
            astore 0 /* k */
        start local 0 // java.lang.Class k
         2: .line 830
            getstatic java.util.concurrent.SynchronousQueue$TransferQueue.UNSAFE:Lsun/misc/Unsafe;
         3: .line 831
            aload 0 /* k */
            ldc "head"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
         4: .line 830
            invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
            putstatic java.util.concurrent.SynchronousQueue$TransferQueue.headOffset:J
         5: .line 832
            getstatic java.util.concurrent.SynchronousQueue$TransferQueue.UNSAFE:Lsun/misc/Unsafe;
         6: .line 833
            aload 0 /* k */
            ldc "tail"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
         7: .line 832
            invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
            putstatic java.util.concurrent.SynchronousQueue$TransferQueue.tailOffset:J
         8: .line 834
            getstatic java.util.concurrent.SynchronousQueue$TransferQueue.UNSAFE:Lsun/misc/Unsafe;
         9: .line 835
            aload 0 /* k */
            ldc "cleanMe"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
        10: .line 834
            invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
            putstatic java.util.concurrent.SynchronousQueue$TransferQueue.cleanMeOffset:J
        end local 0 // java.lang.Class k
        11: .line 836
            goto 14
      StackMap locals:
      StackMap stack: java.lang.Exception
        12: astore 0 /* e */
        start local 0 // java.lang.Exception e
        13: .line 837
            new java.lang.Error
            dup
            aload 0 /* e */
            invokespecial java.lang.Error.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 0 // java.lang.Exception e
        14: .line 839
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            2   11     0     k  Ljava/lang/Class<*>;
           13   14     0     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0    11      12  Class java.lang.Exception

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // java.util.concurrent.SynchronousQueue$TransferQueue this
         0: .line 608
            aload 0 /* this */
            invokespecial java.util.concurrent.SynchronousQueue$Transferer.<init>:()V
         1: .line 609
            new java.util.concurrent.SynchronousQueue$TransferQueue$QNode
            dup
            aconst_null
            iconst_0
            invokespecial java.util.concurrent.SynchronousQueue$TransferQueue$QNode.<init>:(Ljava/lang/Object;Z)V
            astore 1 /* h */
        start local 1 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode h
         2: .line 610
            aload 0 /* this */
            aload 1 /* h */
            putfield java.util.concurrent.SynchronousQueue$TransferQueue.head:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
         3: .line 611
            aload 0 /* this */
            aload 1 /* h */
            putfield java.util.concurrent.SynchronousQueue$TransferQueue.tail:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
         4: .line 612
            return
        end local 1 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode h
        end local 0 // java.util.concurrent.SynchronousQueue$TransferQueue this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljava/util/concurrent/SynchronousQueue$TransferQueue<TE;>;
            2    5     1     h  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;

  void advanceHead(java.util.concurrent.SynchronousQueue$TransferQueue$QNode, java.util.concurrent.SynchronousQueue$TransferQueue$QNode);
    descriptor: (Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // java.util.concurrent.SynchronousQueue$TransferQueue this
        start local 1 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode h
        start local 2 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode nh
         0: .line 619
            aload 1 /* h */
            aload 0 /* this */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue.head:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            if_acmpne 3
         1: .line 620
            getstatic java.util.concurrent.SynchronousQueue$TransferQueue.UNSAFE:Lsun/misc/Unsafe;
            aload 0 /* this */
            getstatic java.util.concurrent.SynchronousQueue$TransferQueue.headOffset:J
            aload 1 /* h */
            aload 2 /* nh */
            invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
            ifeq 3
         2: .line 621
            aload 1 /* h */
            aload 1 /* h */
            putfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.next:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
         3: .line 622
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode nh
        end local 1 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode h
        end local 0 // java.util.concurrent.SynchronousQueue$TransferQueue this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/util/concurrent/SynchronousQueue$TransferQueue<TE;>;
            0    4     1     h  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            0    4     2    nh  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
    MethodParameters:
      Name  Flags
      h     
      nh    

  void advanceTail(java.util.concurrent.SynchronousQueue$TransferQueue$QNode, java.util.concurrent.SynchronousQueue$TransferQueue$QNode);
    descriptor: (Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // java.util.concurrent.SynchronousQueue$TransferQueue this
        start local 1 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode t
        start local 2 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode nt
         0: .line 628
            aload 0 /* this */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue.tail:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            aload 1 /* t */
            if_acmpne 2
         1: .line 629
            getstatic java.util.concurrent.SynchronousQueue$TransferQueue.UNSAFE:Lsun/misc/Unsafe;
            aload 0 /* this */
            getstatic java.util.concurrent.SynchronousQueue$TransferQueue.tailOffset:J
            aload 1 /* t */
            aload 2 /* nt */
            invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
            pop
         2: .line 630
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode nt
        end local 1 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode t
        end local 0 // java.util.concurrent.SynchronousQueue$TransferQueue this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/util/concurrent/SynchronousQueue$TransferQueue<TE;>;
            0    3     1     t  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            0    3     2    nt  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
    MethodParameters:
      Name  Flags
      t     
      nt    

  boolean casCleanMe(java.util.concurrent.SynchronousQueue$TransferQueue$QNode, java.util.concurrent.SynchronousQueue$TransferQueue$QNode);
    descriptor: (Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)Z
    flags: (0x0000) 
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // java.util.concurrent.SynchronousQueue$TransferQueue this
        start local 1 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode cmp
        start local 2 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode val
         0: .line 636
            aload 0 /* this */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue.cleanMe:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            aload 1 /* cmp */
            if_acmpne 3
         1: .line 637
            getstatic java.util.concurrent.SynchronousQueue$TransferQueue.UNSAFE:Lsun/misc/Unsafe;
            aload 0 /* this */
            getstatic java.util.concurrent.SynchronousQueue$TransferQueue.cleanMeOffset:J
            aload 1 /* cmp */
            aload 2 /* val */
            invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
            ifeq 3
         2: .line 636
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 2 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode val
        end local 1 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode cmp
        end local 0 // java.util.concurrent.SynchronousQueue$TransferQueue this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/util/concurrent/SynchronousQueue$TransferQueue<TE;>;
            0    4     1   cmp  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            0    4     2   val  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
    MethodParameters:
      Name  Flags
      cmp   
      val   

  E transfer(E, boolean, );
    descriptor: (Ljava/lang/Object;ZJ)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=6, locals=11, args_size=4
        start local 0 // java.util.concurrent.SynchronousQueue$TransferQueue this
        start local 1 // java.lang.Object e
        start local 2 // boolean timed
        start local 3 // long nanos
         0: .line 670
            aconst_null
            astore 5 /* s */
        start local 5 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode s
         1: .line 671
            aload 1 /* e */
            ifnull 2
            iconst_1
            goto 3
      StackMap locals: java.util.concurrent.SynchronousQueue$TransferQueue$QNode
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: istore 6 /* isData */
        start local 6 // boolean isData
         4: .line 674
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue.tail:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            astore 7 /* t */
        start local 7 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode t
         5: .line 675
            aload 0 /* this */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue.head:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            astore 8 /* h */
        start local 8 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode h
         6: .line 676
            aload 7 /* t */
            ifnull 4
            aload 8 /* h */
            ifnonnull 8
         7: .line 677
            goto 4
         8: .line 679
      StackMap locals: java.util.concurrent.SynchronousQueue$TransferQueue$QNode java.util.concurrent.SynchronousQueue$TransferQueue$QNode
      StackMap stack:
            aload 8 /* h */
            aload 7 /* t */
            if_acmpeq 9
            aload 7 /* t */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.isData:Z
            iload 6 /* isData */
            if_icmpne 34
         9: .line 680
      StackMap locals:
      StackMap stack:
            aload 7 /* t */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.next:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            astore 9 /* tn */
        start local 9 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode tn
        10: .line 681
            aload 7 /* t */
            aload 0 /* this */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue.tail:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            if_acmpeq 12
        11: .line 682
            goto 4
        12: .line 683
      StackMap locals: java.util.concurrent.SynchronousQueue$TransferQueue$QNode
      StackMap stack:
            aload 9 /* tn */
            ifnull 15
        13: .line 684
            aload 0 /* this */
            aload 7 /* t */
            aload 9 /* tn */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue.advanceTail:(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
        14: .line 685
            goto 4
        15: .line 687
      StackMap locals:
      StackMap stack:
            iload 2 /* timed */
            ifeq 17
            lload 3 /* nanos */
            lconst_0
            lcmp
            ifgt 17
        16: .line 688
            aconst_null
            areturn
        17: .line 689
      StackMap locals:
      StackMap stack:
            aload 5 /* s */
            ifnonnull 19
        18: .line 690
            new java.util.concurrent.SynchronousQueue$TransferQueue$QNode
            dup
            aload 1 /* e */
            iload 6 /* isData */
            invokespecial java.util.concurrent.SynchronousQueue$TransferQueue$QNode.<init>:(Ljava/lang/Object;Z)V
            astore 5 /* s */
        19: .line 691
      StackMap locals:
      StackMap stack:
            aload 7 /* t */
            aconst_null
            aload 5 /* s */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue$QNode.casNext:(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)Z
            ifne 21
        20: .line 692
            goto 4
        21: .line 694
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 7 /* t */
            aload 5 /* s */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue.advanceTail:(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
        22: .line 695
            aload 0 /* this */
            aload 5 /* s */
            aload 1 /* e */
            iload 2 /* timed */
            lload 3 /* nanos */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue.awaitFulfill:(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/lang/Object;ZJ)Ljava/lang/Object;
            astore 10 /* x */
        start local 10 // java.lang.Object x
        23: .line 696
            aload 10 /* x */
            aload 5 /* s */
            if_acmpne 26
        24: .line 697
            aload 0 /* this */
            aload 7 /* t */
            aload 5 /* s */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue.clean:(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
        25: .line 698
            aconst_null
            areturn
        26: .line 701
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 5 /* s */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue$QNode.isOffList:()Z
            ifne 31
        27: .line 702
            aload 0 /* this */
            aload 7 /* t */
            aload 5 /* s */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue.advanceHead:(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
        28: .line 703
            aload 10 /* x */
            ifnull 30
        29: .line 704
            aload 5 /* s */
            aload 5 /* s */
            putfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.item:Ljava/lang/Object;
        30: .line 705
      StackMap locals:
      StackMap stack:
            aload 5 /* s */
            aconst_null
            putfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.waiter:Ljava/lang/Thread;
        31: .line 707
      StackMap locals:
      StackMap stack:
            aload 10 /* x */
            ifnull 32
            aload 10 /* x */
            goto 33
      StackMap locals:
      StackMap stack:
        32: aload 1 /* e */
      StackMap locals:
      StackMap stack: java.lang.Object
        33: areturn
        end local 10 // java.lang.Object x
        end local 9 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode tn
        34: .line 710
      StackMap locals:
      StackMap stack:
            aload 8 /* h */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.next:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            astore 9 /* m */
        start local 9 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode m
        35: .line 711
            aload 7 /* t */
            aload 0 /* this */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue.tail:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            if_acmpne 4
            aload 9 /* m */
            ifnull 4
            aload 8 /* h */
            aload 0 /* this */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue.head:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            if_acmpeq 37
        36: .line 712
            goto 4
        37: .line 714
      StackMap locals: java.util.concurrent.SynchronousQueue$TransferQueue$QNode
      StackMap stack:
            aload 9 /* m */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.item:Ljava/lang/Object;
            astore 10 /* x */
        start local 10 // java.lang.Object x
        38: .line 715
            iload 6 /* isData */
            aload 10 /* x */
            ifnull 39
            iconst_1
            goto 40
      StackMap locals: java.util.concurrent.SynchronousQueue$TransferQueue java.lang.Object int long java.util.concurrent.SynchronousQueue$TransferQueue$QNode int java.util.concurrent.SynchronousQueue$TransferQueue$QNode java.util.concurrent.SynchronousQueue$TransferQueue$QNode java.util.concurrent.SynchronousQueue$TransferQueue$QNode java.lang.Object
      StackMap stack: int
        39: iconst_0
      StackMap locals: java.util.concurrent.SynchronousQueue$TransferQueue java.lang.Object int long java.util.concurrent.SynchronousQueue$TransferQueue$QNode int java.util.concurrent.SynchronousQueue$TransferQueue$QNode java.util.concurrent.SynchronousQueue$TransferQueue$QNode java.util.concurrent.SynchronousQueue$TransferQueue$QNode java.lang.Object
      StackMap stack: int int
        40: if_icmpeq 43
        41: .line 716
            aload 10 /* x */
            aload 9 /* m */
            if_acmpeq 43
        42: .line 717
            aload 9 /* m */
            aload 10 /* x */
            aload 1 /* e */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue$QNode.casItem:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifne 45
        43: .line 718
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* h */
            aload 9 /* m */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue.advanceHead:(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
        44: .line 719
            goto 4
        45: .line 722
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* h */
            aload 9 /* m */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue.advanceHead:(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
        46: .line 723
            aload 9 /* m */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.waiter:Ljava/lang/Thread;
            invokestatic java.util.concurrent.locks.LockSupport.unpark:(Ljava/lang/Thread;)V
        47: .line 724
            aload 10 /* x */
            ifnull 48
            aload 10 /* x */
            goto 49
      StackMap locals:
      StackMap stack:
        48: aload 1 /* e */
      StackMap locals:
      StackMap stack: java.lang.Object
        49: areturn
        end local 10 // java.lang.Object x
        end local 9 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode m
        end local 8 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode h
        end local 7 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode t
        end local 6 // boolean isData
        end local 5 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode s
        end local 3 // long nanos
        end local 2 // boolean timed
        end local 1 // java.lang.Object e
        end local 0 // java.util.concurrent.SynchronousQueue$TransferQueue this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   50     0    this  Ljava/util/concurrent/SynchronousQueue$TransferQueue<TE;>;
            0   50     1       e  TE;
            0   50     2   timed  Z
            0   50     3   nanos  J
            1   50     5       s  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            4   50     6  isData  Z
            5   50     7       t  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            6   50     8       h  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
           10   34     9      tn  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
           23   34    10       x  Ljava/lang/Object;
           35   50     9       m  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
           38   50    10       x  Ljava/lang/Object;
    Signature: (TE;ZJ)TE;
    MethodParameters:
       Name  Flags
      e      
      timed  
      nanos  

   awaitFulfill(java.util.concurrent.SynchronousQueue$TransferQueue$QNode, E, boolean, long);
    descriptor: (Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/lang/Object;ZJ)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=4, locals=11, args_size=5
        start local 0 // java.util.concurrent.SynchronousQueue$TransferQueue this
        start local 1 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode s
        start local 2 // java.lang.Object e
        start local 3 // boolean timed
        start local 4 // long nanos
         0: .line 740
            iload 3 /* timed */
            ifeq 1
            invokestatic java.lang.System.nanoTime:()J
            lload 4 /* nanos */
            ladd
            goto 2
      StackMap locals:
      StackMap stack:
         1: lconst_0
      StackMap locals:
      StackMap stack: long
         2: lstore 6 /* deadline */
        start local 6 // long deadline
         3: .line 741
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            astore 8 /* w */
        start local 8 // java.lang.Thread w
         4: .line 742
            aload 0 /* this */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue.head:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            getfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.next:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            aload 1 /* s */
            if_acmpne 7
         5: .line 743
            iload 3 /* timed */
            ifeq 6
            getstatic java.util.concurrent.SynchronousQueue.maxTimedSpins:I
            goto 8
      StackMap locals: long java.lang.Thread
      StackMap stack:
         6: getstatic java.util.concurrent.SynchronousQueue.maxUntimedSpins:I
            goto 8
      StackMap locals:
      StackMap stack:
         7: iconst_0
         8: .line 742
      StackMap locals:
      StackMap stack: int
            istore 9 /* spins */
        start local 9 // int spins
         9: .line 745
      StackMap locals: int
      StackMap stack:
            aload 8 /* w */
            invokevirtual java.lang.Thread.isInterrupted:()Z
            ifeq 11
        10: .line 746
            aload 1 /* s */
            aload 2 /* e */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue$QNode.tryCancel:(Ljava/lang/Object;)V
        11: .line 747
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.item:Ljava/lang/Object;
            astore 10 /* x */
        start local 10 // java.lang.Object x
        12: .line 748
            aload 10 /* x */
            aload 2 /* e */
            if_acmpeq 14
        13: .line 749
            aload 10 /* x */
            areturn
        14: .line 750
      StackMap locals: java.lang.Object
      StackMap stack:
            iload 3 /* timed */
            ifeq 19
        15: .line 751
            lload 6 /* deadline */
            invokestatic java.lang.System.nanoTime:()J
            lsub
            lstore 4 /* nanos */
        16: .line 752
            lload 4 /* nanos */
            lconst_0
            lcmp
            ifgt 19
        17: .line 753
            aload 1 /* s */
            aload 2 /* e */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue$QNode.tryCancel:(Ljava/lang/Object;)V
        18: .line 754
            goto 9
        19: .line 757
      StackMap locals:
      StackMap stack:
            iload 9 /* spins */
            ifle 21
        20: .line 758
            iinc 9 /* spins */ -1
            goto 9
        21: .line 759
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.waiter:Ljava/lang/Thread;
            ifnonnull 23
        22: .line 760
            aload 1 /* s */
            aload 8 /* w */
            putfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.waiter:Ljava/lang/Thread;
            goto 9
        23: .line 761
      StackMap locals:
      StackMap stack:
            iload 3 /* timed */
            ifne 25
        24: .line 762
            aload 0 /* this */
            invokestatic java.util.concurrent.locks.LockSupport.park:(Ljava/lang/Object;)V
            goto 9
        25: .line 763
      StackMap locals:
      StackMap stack:
            lload 4 /* nanos */
            ldc 1000
            lcmp
            ifle 9
        26: .line 764
            aload 0 /* this */
            lload 4 /* nanos */
            invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(Ljava/lang/Object;J)V
        end local 10 // java.lang.Object x
        27: .line 744
            goto 9
        end local 9 // int spins
        end local 8 // java.lang.Thread w
        end local 6 // long deadline
        end local 4 // long nanos
        end local 3 // boolean timed
        end local 2 // java.lang.Object e
        end local 1 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode s
        end local 0 // java.util.concurrent.SynchronousQueue$TransferQueue this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   28     0      this  Ljava/util/concurrent/SynchronousQueue$TransferQueue<TE;>;
            0   28     1         s  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            0   28     2         e  TE;
            0   28     3     timed  Z
            0   28     4     nanos  J
            3   28     6  deadline  J
            4   28     8         w  Ljava/lang/Thread;
            9   28     9     spins  I
           12   27    10         x  Ljava/lang/Object;
    Signature: (Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;TE;ZJ)Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      s      
      e      
      timed  
      nanos  

  void clean(java.util.concurrent.SynchronousQueue$TransferQueue$QNode, java.util.concurrent.SynchronousQueue$TransferQueue$QNode);
    descriptor: (Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=10, args_size=3
        start local 0 // java.util.concurrent.SynchronousQueue$TransferQueue this
        start local 1 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode pred
        start local 2 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode s
         0: .line 772
            aload 2 /* s */
            aconst_null
            putfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.waiter:Ljava/lang/Thread;
         1: .line 781
            goto 36
         2: .line 782
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue.head:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            astore 3 /* h */
        start local 3 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode h
         3: .line 783
            aload 3 /* h */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.next:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            astore 4 /* hn */
        start local 4 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode hn
         4: .line 784
            aload 4 /* hn */
            ifnull 7
            aload 4 /* hn */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue$QNode.isCancelled:()Z
            ifeq 7
         5: .line 785
            aload 0 /* this */
            aload 3 /* h */
            aload 4 /* hn */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue.advanceHead:(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
         6: .line 786
            goto 36
         7: .line 788
      StackMap locals: java.util.concurrent.SynchronousQueue$TransferQueue$QNode java.util.concurrent.SynchronousQueue$TransferQueue$QNode
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue.tail:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            astore 5 /* t */
        start local 5 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode t
         8: .line 789
            aload 5 /* t */
            aload 3 /* h */
            if_acmpne 10
         9: .line 790
            return
        10: .line 791
      StackMap locals: java.util.concurrent.SynchronousQueue$TransferQueue$QNode
      StackMap stack:
            aload 5 /* t */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.next:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            astore 6 /* tn */
        start local 6 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode tn
        11: .line 792
            aload 5 /* t */
            aload 0 /* this */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue.tail:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            if_acmpeq 13
        12: .line 793
            goto 36
        13: .line 794
      StackMap locals: java.util.concurrent.SynchronousQueue$TransferQueue$QNode
      StackMap stack:
            aload 6 /* tn */
            ifnull 16
        14: .line 795
            aload 0 /* this */
            aload 5 /* t */
            aload 6 /* tn */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue.advanceTail:(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
        15: .line 796
            goto 36
        16: .line 798
      StackMap locals:
      StackMap stack:
            aload 2 /* s */
            aload 5 /* t */
            if_acmpeq 20
        17: .line 799
            aload 2 /* s */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.next:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            astore 7 /* sn */
        start local 7 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode sn
        18: .line 800
            aload 7 /* sn */
            aload 2 /* s */
            if_acmpeq 19
            aload 1 /* pred */
            aload 2 /* s */
            aload 7 /* sn */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue$QNode.casNext:(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)Z
            ifeq 20
        19: .line 801
      StackMap locals: java.util.concurrent.SynchronousQueue$TransferQueue$QNode
      StackMap stack:
            return
        end local 7 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode sn
        20: .line 803
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue.cleanMe:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            astore 7 /* dp */
        start local 7 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode dp
        21: .line 804
            aload 7 /* dp */
            ifnull 34
        22: .line 805
            aload 7 /* dp */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.next:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            astore 8 /* d */
        start local 8 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode d
        23: .line 807
            aload 8 /* d */
            ifnull 31
        24: .line 808
            aload 8 /* d */
            aload 7 /* dp */
            if_acmpeq 31
        25: .line 809
            aload 8 /* d */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue$QNode.isCancelled:()Z
            ifeq 31
        26: .line 810
            aload 8 /* d */
            aload 5 /* t */
            if_acmpeq 32
        27: .line 811
            aload 8 /* d */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.next:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            dup
            astore 9 /* dn */
        start local 9 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode dn
        28: ifnull 32
        29: .line 812
            aload 9 /* dn */
            aload 8 /* d */
            if_acmpeq 32
        30: .line 813
            aload 7 /* dp */
            aload 8 /* d */
            aload 9 /* dn */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue$QNode.casNext:(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)Z
            ifeq 32
        end local 9 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode dn
        31: .line 814
      StackMap locals: java.util.concurrent.SynchronousQueue$TransferQueue$QNode java.util.concurrent.SynchronousQueue$TransferQueue$QNode
      StackMap stack:
            aload 0 /* this */
            aload 7 /* dp */
            aconst_null
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue.casCleanMe:(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)Z
            pop
        32: .line 815
      StackMap locals:
      StackMap stack:
            aload 7 /* dp */
            aload 1 /* pred */
            if_acmpne 36
        33: .line 816
            return
        end local 8 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode d
        34: .line 817
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            aload 1 /* pred */
            invokevirtual java.util.concurrent.SynchronousQueue$TransferQueue.casCleanMe:(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)Z
            ifeq 36
        35: .line 818
            return
        end local 7 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode dp
        end local 6 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode tn
        end local 5 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode t
        end local 4 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode hn
        end local 3 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode h
        36: .line 781
      StackMap locals: java.util.concurrent.SynchronousQueue$TransferQueue java.util.concurrent.SynchronousQueue$TransferQueue$QNode java.util.concurrent.SynchronousQueue$TransferQueue$QNode
      StackMap stack:
            aload 1 /* pred */
            getfield java.util.concurrent.SynchronousQueue$TransferQueue$QNode.next:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            aload 2 /* s */
            if_acmpeq 2
        37: .line 820
            return
        end local 2 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode s
        end local 1 // java.util.concurrent.SynchronousQueue$TransferQueue$QNode pred
        end local 0 // java.util.concurrent.SynchronousQueue$TransferQueue this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   38     0  this  Ljava/util/concurrent/SynchronousQueue$TransferQueue<TE;>;
            0   38     1  pred  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            0   38     2     s  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            3   36     3     h  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            4   36     4    hn  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
            8   36     5     t  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
           11   36     6    tn  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
           18   20     7    sn  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
           21   36     7    dp  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
           23   34     8     d  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
           28   31     9    dn  Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
    MethodParameters:
      Name  Flags
      pred  
      s     
}
Signature: <E:Ljava/lang/Object;>Ljava/util/concurrent/SynchronousQueue$Transferer<TE;>;
SourceFile: "SynchronousQueue.java"
NestHost: java.util.concurrent.SynchronousQueue
InnerClasses:
  final TransferQueue = java.util.concurrent.SynchronousQueue$TransferQueue of java.util.concurrent.SynchronousQueue
  final QNode = java.util.concurrent.SynchronousQueue$TransferQueue$QNode of java.util.concurrent.SynchronousQueue$TransferQueue
  abstract Transferer = java.util.concurrent.SynchronousQueue$Transferer of java.util.concurrent.SynchronousQueue