public class org.glassfish.grizzly.http2.Http2SessionOutputSink
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.glassfish.grizzly.http2.Http2SessionOutputSink
  super_class: java.lang.Object
{
  protected final org.glassfish.grizzly.http2.Http2Session http2Session;
    descriptor: Lorg/glassfish/grizzly/http2/Http2Session;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private static final java.util.logging.Logger LOGGER;
    descriptor: Ljava/util/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

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

  private final org.glassfish.grizzly.asyncqueue.TaskQueue<org.glassfish.grizzly.http2.Http2OutputQueueRecord> outputQueue;
    descriptor: Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/glassfish/grizzly/asyncqueue/TaskQueue<Lorg/glassfish/grizzly/http2/Http2OutputQueueRecord;>;

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

  private final java.util.List<org.glassfish.grizzly.http2.frames.Http2Frame> tmpFramesList;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/glassfish/grizzly/http2/frames/Http2Frame;>;

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

  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 48
            ldc Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
            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 org.glassfish.grizzly.http2.Http2SessionOutputSink.$assertionsDisabled:Z
         3: .line 50
            ldc Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
            invokestatic org.glassfish.grizzly.Grizzly.logger:(Ljava/lang/Class;)Ljava/util/logging/Logger;
            putstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER:Ljava/util/logging/Logger;
         4: .line 53
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.glassfish.grizzly.http2.Http2Session);
    descriptor: (Lorg/glassfish/grizzly/http2/Http2Session;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
        start local 1 // org.glassfish.grizzly.http2.Http2Session session
         0: .line 68
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 56
            aload 0 /* this */
            new org.glassfish.grizzly.http2.Http2SessionOutputSink$1
            dup
            aload 0 /* this */
            invokespecial org.glassfish.grizzly.http2.Http2SessionOutputSink$1.<init>:(Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;)V
            invokestatic org.glassfish.grizzly.asyncqueue.TaskQueue.createTaskQueue:(Lorg/glassfish/grizzly/asyncqueue/TaskQueue$MutableMaxQueueSize;)Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
            putfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
         2: .line 65
            aload 0 /* this */
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putfield org.glassfish.grizzly.http2.Http2SessionOutputSink.tmpFramesList:Ljava/util/List;
         3: .line 66
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicBoolean
            dup
            invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:()V
            putfield org.glassfish.grizzly.http2.Http2SessionOutputSink.writerLock:Ljava/util/concurrent/atomic/AtomicBoolean;
         4: .line 69
            aload 0 /* this */
            aload 1 /* session */
            putfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
         5: .line 70
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicInteger
            dup
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
            invokevirtual org.glassfish.grizzly.http2.Http2Session.getDefaultConnectionWindowSize:()I
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
            putfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
         6: .line 71
            return
        end local 1 // org.glassfish.grizzly.http2.Http2Session session
        end local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
            0    7     1  session  Lorg/glassfish/grizzly/http2/Http2Session;
    MethodParameters:
         Name  Flags
      session  

  protected org.glassfish.grizzly.http2.Http2FrameCodec frameCodec();
    descriptor: ()Lorg/glassfish/grizzly/http2/Http2FrameCodec;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
         0: .line 74
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
            getfield org.glassfish.grizzly.http2.Http2Session.handlerFilter:Lorg/glassfish/grizzly/http2/Http2BaseFilter;
            getfield org.glassfish.grizzly.http2.Http2BaseFilter.frameCodec:Lorg/glassfish/grizzly/http2/Http2FrameCodec;
            areturn
        end local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;

  protected void writeDownStream(org.glassfish.grizzly.http2.frames.Http2Frame);
    descriptor: (Lorg/glassfish/grizzly/http2/frames/Http2Frame;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
        start local 1 // org.glassfish.grizzly.http2.frames.Http2Frame frame
         0: .line 79
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
            invokevirtual org.glassfish.grizzly.http2.Http2Session.getHttp2SessionChain:()Lorg/glassfish/grizzly/filterchain/FilterChain;
         1: .line 80
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
            invokevirtual org.glassfish.grizzly.http2.Http2Session.getConnection:()Lorg/glassfish/grizzly/Connection;
            aconst_null
         2: .line 81
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.frameCodec:()Lorg/glassfish/grizzly/http2/Http2FrameCodec;
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
            aload 1 /* frame */
            invokevirtual org.glassfish.grizzly.http2.Http2FrameCodec.serializeAndRecycle:(Lorg/glassfish/grizzly/http2/Http2Session;Lorg/glassfish/grizzly/http2/frames/Http2Frame;)Lorg/glassfish/grizzly/Buffer;
         3: .line 82
            aconst_null
            aconst_null
         4: .line 79
            invokeinterface org.glassfish.grizzly.filterchain.FilterChain.write:(Lorg/glassfish/grizzly/Connection;Ljava/lang/Object;Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;)V
         5: .line 83
            return
        end local 1 // org.glassfish.grizzly.http2.frames.Http2Frame frame
        end local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
            0    6     1  frame  Lorg/glassfish/grizzly/http2/frames/Http2Frame;
    MethodParameters:
       Name  Flags
      frame  final

  protected void writeDownStream(java.util.List<org.glassfish.grizzly.http2.frames.Http2Frame>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
        start local 1 // java.util.List frames
         0: .line 87
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
            invokevirtual org.glassfish.grizzly.http2.Http2Session.getHttp2SessionChain:()Lorg/glassfish/grizzly/filterchain/FilterChain;
         1: .line 88
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
            invokevirtual org.glassfish.grizzly.http2.Http2Session.getConnection:()Lorg/glassfish/grizzly/Connection;
            aconst_null
         2: .line 89
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.frameCodec:()Lorg/glassfish/grizzly/http2/Http2FrameCodec;
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
            aload 1 /* frames */
            invokevirtual org.glassfish.grizzly.http2.Http2FrameCodec.serializeAndRecycle:(Lorg/glassfish/grizzly/http2/Http2Session;Ljava/util/List;)Lorg/glassfish/grizzly/Buffer;
         3: .line 90
            aconst_null
            aconst_null
         4: .line 87
            invokeinterface org.glassfish.grizzly.filterchain.FilterChain.write:(Lorg/glassfish/grizzly/Connection;Ljava/lang/Object;Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;)V
         5: .line 91
            return
        end local 1 // java.util.List frames
        end local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
            0    6     1  frames  Ljava/util/List<Lorg/glassfish/grizzly/http2/frames/Http2Frame;>;
    Signature: (Ljava/util/List<Lorg/glassfish/grizzly/http2/frames/Http2Frame;>;)V
    MethodParameters:
        Name  Flags
      frames  final

  protected <K> void writeDownStream(K, org.glassfish.grizzly.CompletionHandler<org.glassfish.grizzly.WriteResult>, org.glassfish.grizzly.asyncqueue.MessageCloner<org.glassfish.grizzly.Buffer>);
    descriptor: (Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
        start local 1 // java.lang.Object anyMessage
        start local 2 // org.glassfish.grizzly.CompletionHandler completionHandler
        start local 3 // org.glassfish.grizzly.asyncqueue.MessageCloner messageCloner
         0: .line 100
            aload 1 /* anyMessage */
            instanceof java.util.List
            ifeq 3
         1: .line 101
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.frameCodec:()Lorg/glassfish/grizzly/http2/Http2FrameCodec;
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
            aload 1 /* anyMessage */
            checkcast java.util.List
            invokevirtual org.glassfish.grizzly.http2.Http2FrameCodec.serializeAndRecycle:(Lorg/glassfish/grizzly/http2/Http2Session;Ljava/util/List;)Lorg/glassfish/grizzly/Buffer;
            astore 4 /* msg */
        start local 4 // java.lang.Object msg
         2: .line 102
            goto 7
        end local 4 // java.lang.Object msg
      StackMap locals:
      StackMap stack:
         3: aload 1 /* anyMessage */
            instanceof org.glassfish.grizzly.http2.frames.Http2Frame
            ifeq 6
         4: .line 103
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.frameCodec:()Lorg/glassfish/grizzly/http2/Http2FrameCodec;
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
            aload 1 /* anyMessage */
            checkcast org.glassfish.grizzly.http2.frames.Http2Frame
            invokevirtual org.glassfish.grizzly.http2.Http2FrameCodec.serializeAndRecycle:(Lorg/glassfish/grizzly/http2/Http2Session;Lorg/glassfish/grizzly/http2/frames/Http2Frame;)Lorg/glassfish/grizzly/Buffer;
            astore 4 /* msg */
        start local 4 // java.lang.Object msg
         5: .line 104
            goto 7
        end local 4 // java.lang.Object msg
         6: .line 105
      StackMap locals:
      StackMap stack:
            aload 1 /* anyMessage */
            astore 4 /* msg */
        start local 4 // java.lang.Object msg
         7: .line 108
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
            invokevirtual org.glassfish.grizzly.http2.Http2Session.getHttp2SessionChain:()Lorg/glassfish/grizzly/filterchain/FilterChain;
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
            invokevirtual org.glassfish.grizzly.http2.Http2Session.getConnection:()Lorg/glassfish/grizzly/Connection;
            aconst_null
            aload 4 /* msg */
            aload 2 /* completionHandler */
            aload 3 /* messageCloner */
            invokeinterface org.glassfish.grizzly.filterchain.FilterChain.write:(Lorg/glassfish/grizzly/Connection;Ljava/lang/Object;Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;)V
         8: .line 109
            return
        end local 4 // java.lang.Object msg
        end local 3 // org.glassfish.grizzly.asyncqueue.MessageCloner messageCloner
        end local 2 // org.glassfish.grizzly.CompletionHandler completionHandler
        end local 1 // java.lang.Object anyMessage
        end local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    9     0               this  Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
            0    9     1         anyMessage  TK;
            0    9     2  completionHandler  Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;
            0    9     3      messageCloner  Lorg/glassfish/grizzly/asyncqueue/MessageCloner<Lorg/glassfish/grizzly/Buffer;>;
            2    3     4                msg  Ljava/lang/Object;
            5    6     4                msg  Ljava/lang/Object;
            7    9     4                msg  Ljava/lang/Object;
    Signature: <K:Ljava/lang/Object;>(TK;Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;Lorg/glassfish/grizzly/asyncqueue/MessageCloner<Lorg/glassfish/grizzly/Buffer;>;)V
    MethodParameters:
                   Name  Flags
      anyMessage         final
      completionHandler  final
      messageCloner      final

  protected int getAvailablePeerConnectionWindowSize();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
         0: .line 112
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            ireturn
        end local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;

  protected boolean canWrite();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
         0: .line 116
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
            invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.size:()I
            ldc 65536
            if_icmpge 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;

  protected void notifyCanWrite(org.glassfish.grizzly.WriteHandler);
    descriptor: (Lorg/glassfish/grizzly/WriteHandler;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
        start local 1 // org.glassfish.grizzly.WriteHandler writeHandler
         0: .line 120
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
            aload 1 /* writeHandler */
            ldc 65536
            invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.notifyWritePossible:(Lorg/glassfish/grizzly/WriteHandler;I)V
         1: .line 121
            return
        end local 1 // org.glassfish.grizzly.WriteHandler writeHandler
        end local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
            0    2     1  writeHandler  Lorg/glassfish/grizzly/WriteHandler;
    MethodParameters:
              Name  Flags
      writeHandler  final

  protected void onPeerWindowUpdate(int);
    descriptor: (I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=4, args_size=2
        start local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
        start local 1 // int delta
         0: .line 124
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            istore 2 /* currentWindow */
        start local 2 // int currentWindow
         1: .line 125
            iload 1 /* delta */
            ifle 3
            iload 2 /* currentWindow */
            ifle 3
            iload 2 /* currentWindow */
            iload 1 /* delta */
            iadd
            ifge 3
         2: .line 126
            new org.glassfish.grizzly.http2.Http2SessionException
            dup
            getstatic org.glassfish.grizzly.http2.frames.ErrorCode.FLOW_CONTROL_ERROR:Lorg/glassfish/grizzly/http2/frames/ErrorCode;
            ldc "Session flow-control window overflow."
            invokespecial org.glassfish.grizzly.http2.Http2SessionException.<init>:(Lorg/glassfish/grizzly/http2/frames/ErrorCode;Ljava/lang/String;)V
            athrow
         3: .line 128
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
            iload 1 /* delta */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.addAndGet:(I)I
            istore 3 /* newWindowSize */
        start local 3 // int newWindowSize
         4: .line 129
            getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
         5: .line 130
            ldc "Http2Session. Expand connection window size by {0} bytes. Current connection window size is: {1}"
         6: .line 131
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            iload 1 /* delta */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iload 3 /* newWindowSize */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
         7: .line 129
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
         8: .line 133
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.flushOutputQueue:()V
         9: .line 134
            return
        end local 3 // int newWindowSize
        end local 2 // int currentWindow
        end local 1 // int delta
        end local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0           this  Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
            0   10     1          delta  I
            1   10     2  currentWindow  I
            4   10     3  newWindowSize  I
    Exceptions:
      throws org.glassfish.grizzly.http2.Http2SessionException
    MethodParameters:
       Name  Flags
      delta  final

  protected void writeDataDownStream(org.glassfish.grizzly.http2.Http2Stream, java.util.List<org.glassfish.grizzly.http2.frames.Http2Frame>, org.glassfish.grizzly.Buffer, org.glassfish.grizzly.CompletionHandler<org.glassfish.grizzly.WriteResult>, org.glassfish.grizzly.asyncqueue.MessageCloner<org.glassfish.grizzly.Buffer>, );
    descriptor: (Lorg/glassfish/grizzly/http2/Http2Stream;Ljava/util/List;Lorg/glassfish/grizzly/Buffer;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;Z)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=9, args_size=7
        start local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
        start local 1 // org.glassfish.grizzly.http2.Http2Stream stream
        start local 2 // java.util.List headerFrames
        start local 3 // org.glassfish.grizzly.Buffer data
        start local 4 // org.glassfish.grizzly.CompletionHandler completionHandler
        start local 5 // org.glassfish.grizzly.asyncqueue.MessageCloner messageCloner
        start local 6 // boolean isLast
         0: .line 139
            aload 3 /* data */
            ifnull 1
            aload 3 /* data */
            invokeinterface org.glassfish.grizzly.Buffer.hasRemaining:()Z
            ifne 12
            aload 1 /* stream */
            invokevirtual org.glassfish.grizzly.http2.Http2Stream.getUnflushedWritesCount:()I
            iconst_1
            if_icmpne 12
         1: .line 142
      StackMap locals:
      StackMap stack:
            aload 3 /* data */
            ifnonnull 4
         2: .line 143
            aload 0 /* this */
            aload 2 /* headerFrames */
            aload 4 /* completionHandler */
            aload 5 /* messageCloner */
            invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.writeDownStream:(Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;)V
         3: .line 144
            return
         4: .line 147
      StackMap locals:
      StackMap stack:
            invokestatic org.glassfish.grizzly.http2.frames.DataFrame.builder:()Lorg/glassfish/grizzly/http2/frames/DataFrame$DataFrameBuilder;
            aload 1 /* stream */
            invokevirtual org.glassfish.grizzly.http2.Http2Stream.getId:()I
            invokevirtual org.glassfish.grizzly.http2.frames.DataFrame$DataFrameBuilder.streamId:(I)Lorg/glassfish/grizzly/http2/frames/Http2Frame$Http2FrameBuilder;
            checkcast org.glassfish.grizzly.http2.frames.DataFrame$DataFrameBuilder
            aload 3 /* data */
            invokevirtual org.glassfish.grizzly.http2.frames.DataFrame$DataFrameBuilder.data:(Lorg/glassfish/grizzly/Buffer;)Lorg/glassfish/grizzly/http2/frames/DataFrame$DataFrameBuilder;
            iload 6 /* isLast */
            invokevirtual org.glassfish.grizzly.http2.frames.DataFrame$DataFrameBuilder.endStream:(Z)Lorg/glassfish/grizzly/http2/frames/DataFrame$DataFrameBuilder;
            invokevirtual org.glassfish.grizzly.http2.frames.DataFrame$DataFrameBuilder.build:()Lorg/glassfish/grizzly/http2/frames/DataFrame;
            astore 7 /* dataFrame */
        start local 7 // org.glassfish.grizzly.http2.frames.DataFrame dataFrame
         5: .line 150
            aload 2 /* headerFrames */
            ifnull 9
            aload 2 /* headerFrames */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 9
         6: .line 151
            aload 2 /* headerFrames */
            aload 7 /* dataFrame */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 152
            aload 2 /* headerFrames */
            astore 8 /* msg */
        start local 8 // java.lang.Object msg
         8: .line 153
            goto 10
        end local 8 // java.lang.Object msg
         9: .line 154
      StackMap locals: org.glassfish.grizzly.http2.frames.DataFrame
      StackMap stack:
            aload 7 /* dataFrame */
            astore 8 /* msg */
        start local 8 // java.lang.Object msg
        10: .line 157
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 8 /* msg */
            aload 4 /* completionHandler */
            aload 5 /* messageCloner */
            invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.writeDownStream:(Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;)V
        11: .line 158
            return
        end local 8 // java.lang.Object msg
        end local 7 // org.glassfish.grizzly.http2.frames.DataFrame dataFrame
        12: .line 159
      StackMap locals:
      StackMap stack:
            aload 2 /* headerFrames */
            ifnull 14
            aload 2 /* headerFrames */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 14
        13: .line 162
            aload 0 /* this */
            aload 2 /* headerFrames */
            invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.writeDownStream:(Ljava/util/List;)V
        14: .line 165
      StackMap locals:
      StackMap stack:
            aload 3 /* data */
            invokeinterface org.glassfish.grizzly.Buffer.remaining:()I
            istore 7 /* dataSize */
        start local 7 // int dataSize
        15: .line 167
            aload 5 /* messageCloner */
            ifnull 17
        16: .line 168
            aload 5 /* messageCloner */
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
            invokevirtual org.glassfish.grizzly.http2.Http2Session.getConnection:()Lorg/glassfish/grizzly/Connection;
            aload 3 /* data */
            invokeinterface org.glassfish.grizzly.asyncqueue.MessageCloner.clone:(Lorg/glassfish/grizzly/Connection;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.glassfish.grizzly.Buffer
            astore 3 /* data */
        17: .line 171
      StackMap locals: int
      StackMap stack:
            new org.glassfish.grizzly.http2.Http2OutputQueueRecord
            dup
            aload 1 /* stream */
            invokevirtual org.glassfish.grizzly.http2.Http2Stream.getId:()I
            aload 3 /* data */
            aload 4 /* completionHandler */
            iload 6 /* isLast */
            invokespecial org.glassfish.grizzly.http2.Http2OutputQueueRecord.<init>:(ILorg/glassfish/grizzly/Buffer;Lorg/glassfish/grizzly/CompletionHandler;Z)V
            astore 8 /* record */
        start local 8 // org.glassfish.grizzly.http2.Http2OutputQueueRecord record
        18: .line 172
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
            aload 8 /* record */
            invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.offer:(Lorg/glassfish/grizzly/asyncqueue/AsyncQueueRecord;)V
        19: .line 173
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
            aload 8 /* record */
            invokevirtual org.glassfish.grizzly.http2.Http2OutputQueueRecord.isZeroSizeData:()Z
            ifeq 20
            iconst_1
            goto 21
      StackMap locals: org.glassfish.grizzly.http2.Http2SessionOutputSink org.glassfish.grizzly.http2.Http2Stream java.util.List org.glassfish.grizzly.Buffer org.glassfish.grizzly.CompletionHandler org.glassfish.grizzly.asyncqueue.MessageCloner int int org.glassfish.grizzly.http2.Http2OutputQueueRecord
      StackMap stack: org.glassfish.grizzly.asyncqueue.TaskQueue
        20: iload 7 /* dataSize */
      StackMap locals: org.glassfish.grizzly.http2.Http2SessionOutputSink org.glassfish.grizzly.http2.Http2Stream java.util.List org.glassfish.grizzly.Buffer org.glassfish.grizzly.CompletionHandler org.glassfish.grizzly.asyncqueue.MessageCloner int int org.glassfish.grizzly.http2.Http2OutputQueueRecord
      StackMap stack: org.glassfish.grizzly.asyncqueue.TaskQueue int
        21: invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.reserveSpace:(I)I
            pop
        22: .line 175
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.flushOutputQueue:()V
        23: .line 176
            return
        end local 8 // org.glassfish.grizzly.http2.Http2OutputQueueRecord record
        end local 7 // int dataSize
        end local 6 // boolean isLast
        end local 5 // org.glassfish.grizzly.asyncqueue.MessageCloner messageCloner
        end local 4 // org.glassfish.grizzly.CompletionHandler completionHandler
        end local 3 // org.glassfish.grizzly.Buffer data
        end local 2 // java.util.List headerFrames
        end local 1 // org.glassfish.grizzly.http2.Http2Stream stream
        end local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   24     0               this  Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
            0   24     1             stream  Lorg/glassfish/grizzly/http2/Http2Stream;
            0   24     2       headerFrames  Ljava/util/List<Lorg/glassfish/grizzly/http2/frames/Http2Frame;>;
            0   24     3               data  Lorg/glassfish/grizzly/Buffer;
            0   24     4  completionHandler  Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;
            0   24     5      messageCloner  Lorg/glassfish/grizzly/asyncqueue/MessageCloner<Lorg/glassfish/grizzly/Buffer;>;
            0   24     6             isLast  Z
            5   12     7          dataFrame  Lorg/glassfish/grizzly/http2/frames/DataFrame;
            8    9     8                msg  Ljava/lang/Object;
           10   12     8                msg  Ljava/lang/Object;
           15   24     7           dataSize  I
           18   24     8             record  Lorg/glassfish/grizzly/http2/Http2OutputQueueRecord;
    Signature: (Lorg/glassfish/grizzly/http2/Http2Stream;Ljava/util/List<Lorg/glassfish/grizzly/http2/frames/Http2Frame;>;Lorg/glassfish/grizzly/Buffer;Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;Lorg/glassfish/grizzly/asyncqueue/MessageCloner<Lorg/glassfish/grizzly/Buffer;>;Z)V
    MethodParameters:
                   Name  Flags
      stream             final
      headerFrames       final
      data               
      completionHandler  final
      messageCloner      final
      isLast             final

  private void flushOutputQueue();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=14, args_size=1
        start local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
         0: .line 179
            iconst_0
            istore 1 /* backoffDelay */
        start local 1 // int backoffDelay
         1: .line 184
            iconst_0
            istore 4 /* needToNotifyQueueManagement */
        start local 4 // boolean needToNotifyQueueManagement
         2: .line 190
            goto 57
         3: .line 193
      StackMap locals: org.glassfish.grizzly.http2.Http2SessionOutputSink int top top int
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            istore 2 /* availWindowSize */
        start local 2 // int availWindowSize
         4: .line 194
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
            invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.size:()I
            istore 3 /* queueSize */
        start local 3 // int queueSize
         5: .line 196
            aconst_null
            astore 5 /* completionHandlers */
        start local 5 // org.glassfish.grizzly.http2.AggrCompletionHandler completionHandlers
         6: .line 197
            aconst_null
            astore 6 /* writeCompletionHandler */
        start local 6 // org.glassfish.grizzly.CompletionHandler writeCompletionHandler
         7: .line 198
            iconst_0
            istore 7 /* writeCompletionHandlerBytes */
        start local 7 // int writeCompletionHandlerBytes
         8: .line 199
            iconst_0
            istore 8 /* bytesToTransfer */
        start local 8 // int bytesToTransfer
         9: .line 200
            iconst_0
            istore 9 /* queueSizeToFree */
        start local 9 // int queueSizeToFree
        10: .line 201
            iconst_0
            istore 10 /* breakNow */
        start local 10 // boolean breakNow
        11: .line 204
            goto 42
        12: .line 206
      StackMap locals: org.glassfish.grizzly.http2.Http2SessionOutputSink int int int int org.glassfish.grizzly.http2.AggrCompletionHandler org.glassfish.grizzly.CompletionHandler int int int int
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
            invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.poll:()Lorg/glassfish/grizzly/asyncqueue/AsyncQueueRecord;
            checkcast org.glassfish.grizzly.http2.Http2OutputQueueRecord
            astore 11 /* record */
        start local 11 // org.glassfish.grizzly.http2.Http2OutputQueueRecord record
        13: .line 207
            aload 11 /* record */
            ifnonnull 19
        14: .line 209
            getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.WARNING:Ljava/util/logging/Level;
            ldc "UNEXPECTED NULL RECORD. Queue-size: {0} byteToTransfer={1} queueSizeToFree={2} queueSize={3}"
        15: .line 211
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
            invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.size:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iload 8 /* bytesToTransfer */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iload 9 /* queueSizeToFree */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_3
            iload 3 /* queueSize */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
        16: .line 209
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
        17: .line 212
            iconst_1
            istore 10 /* breakNow */
        18: .line 213
            goto 43
        19: .line 215
      StackMap locals: org.glassfish.grizzly.http2.Http2OutputQueueRecord
      StackMap stack:
            aload 11 /* record */
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.tmpFramesList:Ljava/util/List;
        20: .line 216
            sipush 16383
            iload 2 /* availWindowSize */
            iload 8 /* bytesToTransfer */
            isub
            invokestatic java.lang.Math.min:(II)I
        21: .line 215
            invokevirtual org.glassfish.grizzly.http2.Http2OutputQueueRecord.serializeTo:(Ljava/util/List;I)I
            istore 12 /* serializedBytes */
        start local 12 // int serializedBytes
        22: .line 217
            iload 8 /* bytesToTransfer */
            iload 12 /* serializedBytes */
            iadd
            istore 8 /* bytesToTransfer */
        23: .line 218
            iload 9 /* queueSizeToFree */
            iload 12 /* serializedBytes */
            iadd
            istore 9 /* queueSizeToFree */
        24: .line 220
            aload 11 /* record */
            invokevirtual org.glassfish.grizzly.http2.Http2OutputQueueRecord.isFinished:()Z
            ifeq 28
        25: .line 221
            aload 11 /* record */
            invokevirtual org.glassfish.grizzly.http2.Http2OutputQueueRecord.isZeroSizeData:()Z
            ifeq 29
        26: .line 222
            iinc 9 /* queueSizeToFree */ 1
        27: .line 224
            goto 29
        28: .line 225
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
            aload 11 /* record */
            invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.setCurrentElement:(Lorg/glassfish/grizzly/asyncqueue/AsyncQueueRecord;)V
        29: .line 228
      StackMap locals:
      StackMap stack:
            aload 11 /* record */
            invokevirtual org.glassfish.grizzly.http2.Http2OutputQueueRecord.getCompletionHandler:()Lorg/glassfish/grizzly/CompletionHandler;
            astore 13 /* recordCompletionHandler */
        start local 13 // org.glassfish.grizzly.CompletionHandler recordCompletionHandler
        30: .line 233
            aload 13 /* recordCompletionHandler */
            ifnull 42
        31: .line 234
            aload 5 /* completionHandlers */
            ifnull 34
        32: .line 235
            aload 5 /* completionHandlers */
            aload 13 /* recordCompletionHandler */
            iload 12 /* serializedBytes */
            invokevirtual org.glassfish.grizzly.http2.AggrCompletionHandler.register:(Lorg/glassfish/grizzly/CompletionHandler;I)V
        33: .line 236
            goto 42
      StackMap locals: org.glassfish.grizzly.CompletionHandler
      StackMap stack:
        34: aload 6 /* writeCompletionHandler */
            ifnonnull 38
        35: .line 237
            aload 13 /* recordCompletionHandler */
            astore 6 /* writeCompletionHandler */
        36: .line 238
            iload 12 /* serializedBytes */
            istore 7 /* writeCompletionHandlerBytes */
        37: .line 239
            goto 42
        38: .line 240
      StackMap locals:
      StackMap stack:
            new org.glassfish.grizzly.http2.AggrCompletionHandler
            dup
            invokespecial org.glassfish.grizzly.http2.AggrCompletionHandler.<init>:()V
            astore 5 /* completionHandlers */
        39: .line 241
            aload 5 /* completionHandlers */
            aload 6 /* writeCompletionHandler */
            iload 7 /* writeCompletionHandlerBytes */
            invokevirtual org.glassfish.grizzly.http2.AggrCompletionHandler.register:(Lorg/glassfish/grizzly/CompletionHandler;I)V
        40: .line 242
            aload 5 /* completionHandlers */
            aload 13 /* recordCompletionHandler */
            iload 12 /* serializedBytes */
            invokevirtual org.glassfish.grizzly.http2.AggrCompletionHandler.register:(Lorg/glassfish/grizzly/CompletionHandler;I)V
        41: .line 243
            aload 5 /* completionHandlers */
            astore 6 /* writeCompletionHandler */
        end local 13 // org.glassfish.grizzly.CompletionHandler recordCompletionHandler
        end local 12 // int serializedBytes
        end local 11 // org.glassfish.grizzly.http2.Http2OutputQueueRecord record
        42: .line 204
      StackMap locals:
      StackMap stack:
            iload 2 /* availWindowSize */
            iload 8 /* bytesToTransfer */
            if_icmple 43
            iload 3 /* queueSize */
            iload 9 /* queueSizeToFree */
            if_icmpgt 12
        43: .line 249
      StackMap locals:
      StackMap stack:
            iload 9 /* queueSizeToFree */
            ifle 53
        44: .line 250
            getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.$assertionsDisabled:Z
            ifne 45
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.tmpFramesList:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 45
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        45: .line 253
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.tmpFramesList:Ljava/util/List;
            aload 6 /* writeCompletionHandler */
            aconst_null
            invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.writeDownStream:(Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;)V
        46: .line 255
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
            iload 8 /* bytesToTransfer */
            ineg
            invokevirtual java.util.concurrent.atomic.AtomicInteger.addAndGet:(I)I
            istore 11 /* newWindowSize */
        start local 11 // int newWindowSize
        47: .line 257
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
            iload 9 /* queueSizeToFree */
            invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.releaseSpace:(I)I
            pop
        48: .line 259
            iconst_1
            istore 4 /* needToNotifyQueueManagement */
        49: .line 260
            getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
        50: .line 261
            ldc "Http2Session. Shrink connection window size by {0} bytes. Current connection window size is: {1}"
        51: .line 262
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            iload 8 /* bytesToTransfer */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iload 11 /* newWindowSize */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
        52: .line 260
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
        end local 11 // int newWindowSize
        53: .line 266
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.writerLock:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
        54: .line 267
            iload 10 /* breakNow */
            ifeq 56
        55: .line 268
            goto 58
        56: .line 273
      StackMap locals:
      StackMap stack:
            iload 1 /* backoffDelay */
            iinc 1 /* backoffDelay */ 1
            i2l
            invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(J)V
        end local 10 // boolean breakNow
        end local 9 // int queueSizeToFree
        end local 8 // int bytesToTransfer
        end local 7 // int writeCompletionHandlerBytes
        end local 6 // org.glassfish.grizzly.CompletionHandler writeCompletionHandler
        end local 5 // org.glassfish.grizzly.http2.AggrCompletionHandler completionHandlers
        end local 3 // int queueSize
        end local 2 // int availWindowSize
        57: .line 190
      StackMap locals: org.glassfish.grizzly.http2.Http2SessionOutputSink int top top int
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            ifle 58
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
            invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.isEmpty:()Z
            ifne 58
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.writerLock:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_0
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
            ifne 3
        58: .line 276
      StackMap locals:
      StackMap stack:
            iload 4 /* needToNotifyQueueManagement */
            ifeq 60
        59: .line 277
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
            invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.doNotify:()V
        60: .line 279
      StackMap locals:
      StackMap stack:
            return
        end local 4 // boolean needToNotifyQueueManagement
        end local 1 // int backoffDelay
        end local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
      LocalVariableTable:
        Start  End  Slot                         Name  Signature
            0   61     0                         this  Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
            1   61     1                 backoffDelay  I
            4   57     2              availWindowSize  I
            5   57     3                    queueSize  I
            2   61     4  needToNotifyQueueManagement  Z
            6   57     5           completionHandlers  Lorg/glassfish/grizzly/http2/AggrCompletionHandler;
            7   57     6       writeCompletionHandler  Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;
            8   57     7  writeCompletionHandlerBytes  I
            9   57     8              bytesToTransfer  I
           10   57     9              queueSizeToFree  I
           11   57    10                     breakNow  Z
           13   42    11                       record  Lorg/glassfish/grizzly/http2/Http2OutputQueueRecord;
           22   42    12              serializedBytes  I
           30   42    13      recordCompletionHandler  Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;
           47   53    11                newWindowSize  I

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
         0: .line 282
            aload 0 /* this */
            getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
            invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.onClose:()V
         1: .line 283
            return
        end local 0 // org.glassfish.grizzly.http2.Http2SessionOutputSink this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
}
SourceFile: "Http2SessionOutputSink.java"
NestMembers:
  org.glassfish.grizzly.http2.Http2SessionOutputSink$1
InnerClasses:
  public abstract MutableMaxQueueSize = org.glassfish.grizzly.asyncqueue.TaskQueue$MutableMaxQueueSize of org.glassfish.grizzly.asyncqueue.TaskQueue
  org.glassfish.grizzly.http2.Http2SessionOutputSink$1
  public DataFrameBuilder = org.glassfish.grizzly.http2.frames.DataFrame$DataFrameBuilder of org.glassfish.grizzly.http2.frames.DataFrame
  protected abstract Http2FrameBuilder = org.glassfish.grizzly.http2.frames.Http2Frame$Http2FrameBuilder of org.glassfish.grizzly.http2.frames.Http2Frame