public class jdk.incubator.http.internal.common.AsyncWriteQueue implements java.io.Closeable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: jdk.incubator.http.internal.common.AsyncWriteQueue
  super_class: java.lang.Object
{
  private static final int IDLE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

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

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

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

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

  private final java.util.concurrent.atomic.AtomicInteger state;
    descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Deque<jdk.incubator.http.internal.common.ByteBufferReference[]> queue;
    descriptor: Ljava/util/Deque;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Deque<[Ljdk/incubator/http/internal/common/ByteBufferReference;>;

  private final java.util.function.BiConsumer<jdk.incubator.http.internal.common.ByteBufferReference[], jdk.incubator.http.internal.common.AsyncWriteQueue> consumeAction;
    descriptor: Ljava/util/function/BiConsumer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/function/BiConsumer<[Ljdk/incubator/http/internal/common/ByteBufferReference;Ljdk/incubator/http/internal/common/AsyncWriteQueue;>;

  private final boolean doFullDrain;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private jdk.incubator.http.internal.common.ByteBufferReference[] delayedElement;
    descriptor: [Ljdk/incubator/http/internal/common/ByteBufferReference;
    flags: (0x0002) ACC_PRIVATE

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 39
            ldc Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic jdk.incubator.http.internal.common.AsyncWriteQueue.$assertionsDisabled:Z
         3: .line 50
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.util.function.BiConsumer<jdk.incubator.http.internal.common.ByteBufferReference[], jdk.incubator.http.internal.common.AsyncWriteQueue>);
    descriptor: (Ljava/util/function/BiConsumer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
        start local 1 // java.util.function.BiConsumer consumeAction
         0: .line 64
            aload 0 /* this */
            aload 1 /* consumeAction */
            iconst_1
            invokespecial jdk.incubator.http.internal.common.AsyncWriteQueue.<init>:(Ljava/util/function/BiConsumer;Z)V
         1: .line 65
            return
        end local 1 // java.util.function.BiConsumer consumeAction
        end local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            0    2     1  consumeAction  Ljava/util/function/BiConsumer<[Ljdk/incubator/http/internal/common/ByteBufferReference;Ljdk/incubator/http/internal/common/AsyncWriteQueue;>;
    Signature: (Ljava/util/function/BiConsumer<[Ljdk/incubator/http/internal/common/ByteBufferReference;Ljdk/incubator/http/internal/common/AsyncWriteQueue;>;)V
    MethodParameters:
               Name  Flags
      consumeAction  

  public void <init>(java.util.function.BiConsumer<jdk.incubator.http.internal.common.ByteBufferReference[], jdk.incubator.http.internal.common.AsyncWriteQueue>, );
    descriptor: (Ljava/util/function/BiConsumer;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
        start local 1 // java.util.function.BiConsumer consumeAction
        start local 2 // boolean doFullDrain
         0: .line 67
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 52
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicInteger
            dup
            iconst_0
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
            putfield jdk.incubator.http.internal.common.AsyncWriteQueue.state:Ljava/util/concurrent/atomic/AtomicInteger;
         2: .line 53
            aload 0 /* this */
            new java.util.concurrent.ConcurrentLinkedDeque
            dup
            invokespecial java.util.concurrent.ConcurrentLinkedDeque.<init>:()V
            putfield jdk.incubator.http.internal.common.AsyncWriteQueue.queue:Ljava/util/Deque;
         3: .line 61
            aload 0 /* this */
            aconst_null
            putfield jdk.incubator.http.internal.common.AsyncWriteQueue.delayedElement:[Ljdk/incubator/http/internal/common/ByteBufferReference;
         4: .line 68
            aload 0 /* this */
            aload 1 /* consumeAction */
            putfield jdk.incubator.http.internal.common.AsyncWriteQueue.consumeAction:Ljava/util/function/BiConsumer;
         5: .line 69
            aload 0 /* this */
            iload 2 /* doFullDrain */
            putfield jdk.incubator.http.internal.common.AsyncWriteQueue.doFullDrain:Z
         6: .line 70
            return
        end local 2 // boolean doFullDrain
        end local 1 // java.util.function.BiConsumer consumeAction
        end local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0           this  Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            0    7     1  consumeAction  Ljava/util/function/BiConsumer<[Ljdk/incubator/http/internal/common/ByteBufferReference;Ljdk/incubator/http/internal/common/AsyncWriteQueue;>;
            0    7     2    doFullDrain  Z
    Signature: (Ljava/util/function/BiConsumer<[Ljdk/incubator/http/internal/common/ByteBufferReference;Ljdk/incubator/http/internal/common/AsyncWriteQueue;>;Z)V
    MethodParameters:
               Name  Flags
      consumeAction  
      doFullDrain    

  public void put(jdk.incubator.http.internal.common.ByteBufferReference[]);
    descriptor: ([Ljdk/incubator/http/internal/common/ByteBufferReference;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] e
         0: .line 73
            aload 0 /* this */
            invokevirtual jdk.incubator.http.internal.common.AsyncWriteQueue.ensureOpen:()V
         1: .line 74
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.queue:Ljava/util/Deque;
            aload 1 /* e */
            invokeinterface java.util.Deque.addLast:(Ljava/lang/Object;)V
         2: .line 75
            return
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] e
        end local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            0    3     1     e  [Ljdk/incubator/http/internal/common/ByteBufferReference;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      e     

  public void putFirst(jdk.incubator.http.internal.common.ByteBufferReference[]);
    descriptor: ([Ljdk/incubator/http/internal/common/ByteBufferReference;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] e
         0: .line 78
            aload 0 /* this */
            invokevirtual jdk.incubator.http.internal.common.AsyncWriteQueue.ensureOpen:()V
         1: .line 79
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.queue:Ljava/util/Deque;
            aload 1 /* e */
            invokeinterface java.util.Deque.addFirst:(Ljava/lang/Object;)V
         2: .line 80
            return
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] e
        end local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            0    3     1     e  [Ljdk/incubator/http/internal/common/ByteBufferReference;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      e     

  public boolean flush();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
         0: .line 89
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.state:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            tableswitch { // 0 - 4
                    0: 1
                    1: 4
                    2: 6
                    3: 6
                    4: 7
              default: 8
          }
         1: .line 91
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.state:Ljava/util/concurrent/atomic/AtomicInteger;
            iconst_0
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicInteger.compareAndSet:(II)Z
            ifeq 0
         2: .line 92
            aload 0 /* this */
            invokevirtual jdk.incubator.http.internal.common.AsyncWriteQueue.flushLoop:()V
         3: .line 93
            iconst_1
            ireturn
         4: .line 97
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.state:Ljava/util/concurrent/atomic/AtomicInteger;
            iconst_1
            iconst_2
            invokevirtual java.util.concurrent.atomic.AtomicInteger.compareAndSet:(II)Z
            ifeq 0
         5: .line 98
            iconst_0
            ireturn
         6: .line 103
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         7: .line 105
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            ldc "Queue closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 88
      StackMap locals:
      StackMap stack:
            goto 0
        end local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Ljdk/incubator/http/internal/common/AsyncWriteQueue;
    Exceptions:
      throws java.io.IOException

  public void flushDelayed();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
         0: .line 117
            aload 0 /* this */
            invokevirtual jdk.incubator.http.internal.common.AsyncWriteQueue.ensureOpen:()V
         1: .line 118
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.state:Ljava/util/concurrent/atomic/AtomicInteger;
            iconst_3
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicInteger.compareAndSet:(II)Z
            ifne 4
         2: .line 119
            aload 0 /* this */
            invokevirtual jdk.incubator.http.internal.common.AsyncWriteQueue.ensureOpen:()V
         3: .line 120
            new java.lang.RuntimeException
            dup
            ldc "Shouldn't happen"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 122
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.incubator.http.internal.common.AsyncWriteQueue.flushLoop:()V
         5: .line 123
            return
        end local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljdk/incubator/http/internal/common/AsyncWriteQueue;
    Exceptions:
      throws java.io.IOException

  private jdk.incubator.http.internal.common.ByteBufferReference[] drain(jdk.incubator.http.internal.common.ByteBufferReference[]);
    descriptor: ([Ljdk/incubator/http/internal/common/ByteBufferReference;)[Ljdk/incubator/http/internal/common/ByteBufferReference;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] prev
         0: .line 126
            getstatic jdk.incubator.http.internal.common.AsyncWriteQueue.$assertionsDisabled:Z
            ifne 1
            aload 1 /* prev */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 127
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.doFullDrain:Z
            ifeq 12
         2: .line 128
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.queue:Ljava/util/Deque;
            invokeinterface java.util.Deque.poll:()Ljava/lang/Object;
            checkcast jdk.incubator.http.internal.common.ByteBufferReference[]
            astore 2 /* next */
        start local 2 // jdk.incubator.http.internal.common.ByteBufferReference[] next
         3: .line 129
            aload 2 /* next */
            ifnonnull 5
         4: .line 130
            aload 1 /* prev */
            areturn
         5: .line 132
      StackMap locals: jdk.incubator.http.internal.common.ByteBufferReference[]
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* drained */
        start local 3 // java.util.List drained
         6: .line 133
            aload 3 /* drained */
            aload 1 /* prev */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         7: .line 134
            aload 3 /* drained */
            aload 2 /* next */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         8: .line 135
            goto 10
         9: .line 136
      StackMap locals: java.util.List
      StackMap stack:
            aload 3 /* drained */
            aload 2 /* next */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
        10: .line 135
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.queue:Ljava/util/Deque;
            invokeinterface java.util.Deque.poll:()Ljava/lang/Object;
            checkcast jdk.incubator.http.internal.common.ByteBufferReference[]
            dup
            astore 2 /* next */
            ifnonnull 9
        11: .line 138
            aload 3 /* drained */
            iconst_0
            anewarray jdk.incubator.http.internal.common.ByteBufferReference
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast jdk.incubator.http.internal.common.ByteBufferReference[]
            areturn
        end local 3 // java.util.List drained
        end local 2 // jdk.incubator.http.internal.common.ByteBufferReference[] next
        12: .line 140
      StackMap locals:
      StackMap stack:
            aload 1 /* prev */
            areturn
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] prev
        end local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0     this  Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            0   13     1     prev  [Ljdk/incubator/http/internal/common/ByteBufferReference;
            3   12     2     next  [Ljdk/incubator/http/internal/common/ByteBufferReference;
            6   12     3  drained  Ljava/util/List<Ljdk/incubator/http/internal/common/ByteBufferReference;>;
    MethodParameters:
      Name  Flags
      prev  

  private jdk.incubator.http.internal.common.ByteBufferReference[] drain();
    descriptor: ()[Ljdk/incubator/http/internal/common/ByteBufferReference;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
         0: .line 145
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.queue:Ljava/util/Deque;
            invokeinterface java.util.Deque.poll:()Ljava/lang/Object;
            checkcast jdk.incubator.http.internal.common.ByteBufferReference[]
            astore 1 /* next */
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] next
         1: .line 146
            aload 1 /* next */
            ifnonnull 2
            aconst_null
            goto 3
      StackMap locals: jdk.incubator.http.internal.common.ByteBufferReference[]
      StackMap stack:
         2: aload 0 /* this */
            aload 1 /* next */
            invokevirtual jdk.incubator.http.internal.common.AsyncWriteQueue.drain:([Ljdk/incubator/http/internal/common/ByteBufferReference;)[Ljdk/incubator/http/internal/common/ByteBufferReference;
      StackMap locals:
      StackMap stack: jdk.incubator.http.internal.common.ByteBufferReference[]
         3: areturn
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] next
        end local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            1    4     1  next  [Ljdk/incubator/http/internal/common/ByteBufferReference;

  private void flushLoop();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
         0: .line 151
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.delayedElement:[Ljdk/incubator/http/internal/common/ByteBufferReference;
            ifnull 4
         1: .line 152
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.delayedElement:[Ljdk/incubator/http/internal/common/ByteBufferReference;
            invokevirtual jdk.incubator.http.internal.common.AsyncWriteQueue.drain:([Ljdk/incubator/http/internal/common/ByteBufferReference;)[Ljdk/incubator/http/internal/common/ByteBufferReference;
            astore 1 /* element */
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] element
         2: .line 153
            aload 0 /* this */
            aconst_null
            putfield jdk.incubator.http.internal.common.AsyncWriteQueue.delayedElement:[Ljdk/incubator/http/internal/common/ByteBufferReference;
         3: .line 154
            goto 10
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] element
         4: .line 155
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.incubator.http.internal.common.AsyncWriteQueue.drain:()[Ljdk/incubator/http/internal/common/ByteBufferReference;
            astore 1 /* element */
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] element
         5: .line 158
            goto 10
         6: .line 159
      StackMap locals: jdk.incubator.http.internal.common.ByteBufferReference[]
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.consumeAction:Ljava/util/function/BiConsumer;
            aload 1 /* element */
            aload 0 /* this */
            invokeinterface java.util.function.BiConsumer.accept:(Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 160
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.state:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            iconst_3
            if_icmpne 9
         8: .line 161
            return
         9: .line 163
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.incubator.http.internal.common.AsyncWriteQueue.drain:()[Ljdk/incubator/http/internal/common/ByteBufferReference;
            astore 1 /* element */
        10: .line 158
      StackMap locals:
      StackMap stack:
            aload 1 /* element */
            ifnonnull 6
        11: .line 165
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.state:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            tableswitch { // 0 - 4
                    0: 12
                    1: 13
                    2: 15
                    3: 12
                    4: 17
              default: 18
          }
        12: .line 168
      StackMap locals:
      StackMap stack:
            new java.lang.RuntimeException
            dup
            ldc "Shouldn't happen"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 170
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.state:Ljava/util/concurrent/atomic/AtomicInteger;
            iconst_1
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicInteger.compareAndSet:(II)Z
            ifeq 18
        14: .line 171
            return
        15: .line 176
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.state:Ljava/util/concurrent/atomic/AtomicInteger;
            iconst_2
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicInteger.compareAndSet:(II)Z
            pop
        16: .line 177
            goto 18
        17: .line 179
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            ldc "Queue closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 181
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.incubator.http.internal.common.AsyncWriteQueue.drain:()[Ljdk/incubator/http/internal/common/ByteBufferReference;
            astore 1 /* element */
        19: .line 157
            goto 10
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] element
        end local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   20     0     this  Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            2    4     1  element  [Ljdk/incubator/http/internal/common/ByteBufferReference;
            5   20     1  element  [Ljdk/incubator/http/internal/common/ByteBufferReference;
    Exceptions:
      throws java.io.IOException

  public void setDelayed(jdk.incubator.http.internal.common.ByteBufferReference[]);
    descriptor: ([Ljdk/incubator/http/internal/common/ByteBufferReference;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] delayedElement
         0: .line 192
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.state:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            istore 2 /* state */
        start local 2 // int state
         1: .line 193
            iload 2 /* state */
            tableswitch { // 0 - 4
                    0: 2
                    1: 3
                    2: 3
                    3: 2
                    4: 6
              default: 7
          }
         2: .line 196
      StackMap locals: int
      StackMap stack:
            new java.lang.RuntimeException
            dup
            ldc "Shouldn't happen"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 199
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.state:Ljava/util/concurrent/atomic/AtomicInteger;
            iload 2 /* state */
            iconst_3
            invokevirtual java.util.concurrent.atomic.AtomicInteger.compareAndSet:(II)Z
            ifeq 0
         4: .line 200
            aload 0 /* this */
            aload 1 /* delayedElement */
            putfield jdk.incubator.http.internal.common.AsyncWriteQueue.delayedElement:[Ljdk/incubator/http/internal/common/ByteBufferReference;
         5: .line 201
            return
         6: .line 205
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            ldc "Queue closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // int state
         7: .line 191
      StackMap locals:
      StackMap stack:
            goto 0
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] delayedElement
        end local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            0    8     1  delayedElement  [Ljdk/incubator/http/internal/common/ByteBufferReference;
            1    7     2           state  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      delayedElement  

  private void ensureOpen();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
         0: .line 212
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.state:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            iconst_4
            if_icmpne 2
         1: .line 213
            new java.io.IOException
            dup
            ldc "Queue closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 215
      StackMap locals:
      StackMap stack:
            return
        end local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/incubator/http/internal/common/AsyncWriteQueue;
    Exceptions:
      throws java.io.IOException

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
         0: .line 219
            aload 0 /* this */
            getfield jdk.incubator.http.internal.common.AsyncWriteQueue.state:Ljava/util/concurrent/atomic/AtomicInteger;
            iconst_4
            invokevirtual java.util.concurrent.atomic.AtomicInteger.getAndSet:(I)I
            pop
         1: .line 220
            return
        end local 0 // jdk.incubator.http.internal.common.AsyncWriteQueue this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/incubator/http/internal/common/AsyncWriteQueue;
    Exceptions:
      throws java.io.IOException
}
SourceFile: "AsyncWriteQueue.java"