public class org.glassfish.grizzly.servlet.ServletOutputStreamImpl extends jakarta.servlet.ServletOutputStream
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.glassfish.grizzly.servlet.ServletOutputStreamImpl
  super_class: jakarta.servlet.ServletOutputStream
{
  private final org.glassfish.grizzly.servlet.HttpServletResponseImpl servletResponse;
    descriptor: Lorg/glassfish/grizzly/servlet/HttpServletResponseImpl;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private org.glassfish.grizzly.http.io.NIOOutputStream outputStream;
    descriptor: Lorg/glassfish/grizzly/http/io/NIOOutputStream;
    flags: (0x0002) ACC_PRIVATE

  private org.glassfish.grizzly.WriteHandler writeHandler;
    descriptor: Lorg/glassfish/grizzly/WriteHandler;
    flags: (0x0002) ACC_PRIVATE

  private boolean hasSetWriteListener;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean prevIsReady;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private static final java.lang.ThreadLocal<java.lang.Boolean> CAN_WRITE_SCOPE;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<Ljava/lang/Boolean;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 42
            new java.lang.ThreadLocal
            dup
            invokespecial java.lang.ThreadLocal.<init>:()V
            putstatic org.glassfish.grizzly.servlet.ServletOutputStreamImpl.CAN_WRITE_SCOPE:Ljava/lang/ThreadLocal;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(org.glassfish.grizzly.servlet.HttpServletResponseImpl);
    descriptor: (Lorg/glassfish/grizzly/servlet/HttpServletResponseImpl;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
        start local 1 // org.glassfish.grizzly.servlet.HttpServletResponseImpl servletResponse
         0: .line 44
            aload 0 /* this */
            invokespecial jakarta.servlet.ServletOutputStream.<init>:()V
         1: .line 38
            aload 0 /* this */
            aconst_null
            putfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.writeHandler:Lorg/glassfish/grizzly/WriteHandler;
         2: .line 39
            aload 0 /* this */
            iconst_0
            putfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.hasSetWriteListener:Z
         3: .line 40
            aload 0 /* this */
            iconst_1
            putfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.prevIsReady:Z
         4: .line 45
            aload 0 /* this */
            aload 1 /* servletResponse */
            putfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.servletResponse:Lorg/glassfish/grizzly/servlet/HttpServletResponseImpl;
         5: .line 46
            return
        end local 1 // org.glassfish.grizzly.servlet.HttpServletResponseImpl servletResponse
        end local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0             this  Lorg/glassfish/grizzly/servlet/ServletOutputStreamImpl;
            0    6     1  servletResponse  Lorg/glassfish/grizzly/servlet/HttpServletResponseImpl;
    MethodParameters:
                 Name  Flags
      servletResponse  final

  protected void initialize();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
         0: .line 49
            aload 0 /* this */
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.servletResponse:Lorg/glassfish/grizzly/servlet/HttpServletResponseImpl;
            invokevirtual org.glassfish.grizzly.servlet.HttpServletResponseImpl.getResponse:()Lorg/glassfish/grizzly/http/server/Response;
            invokevirtual org.glassfish.grizzly.http.server.Response.createOutputStream:()Lorg/glassfish/grizzly/http/io/NIOOutputStream;
            putfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.outputStream:Lorg/glassfish/grizzly/http/io/NIOOutputStream;
         1: .line 50
            return
        end local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/glassfish/grizzly/servlet/ServletOutputStreamImpl;
    Exceptions:
      throws java.io.IOException

  public void write(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
        start local 1 // int i
         0: .line 54
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.prevIsReady:Z
            ifne 2
         1: .line 55
            new java.lang.IllegalStateException
            dup
            invokestatic org.glassfish.grizzly.localization.LogMessages.WARNING_GRIZZLY_HTTP_SERVLET_NON_BLOCKING_ERROR:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 58
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.outputStream:Lorg/glassfish/grizzly/http/io/NIOOutputStream;
            iload 1 /* i */
            invokevirtual org.glassfish.grizzly.http.io.NIOOutputStream.write:(I)V
         3: .line 59
            return
        end local 1 // int i
        end local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/glassfish/grizzly/servlet/ServletOutputStreamImpl;
            0    4     1     i  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      i     

  public void write(byte[]);
    descriptor: ([B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
        start local 1 // byte[] b
         0: .line 63
            aload 0 /* this */
            aload 1 /* b */
            iconst_0
            aload 1 /* b */
            arraylength
            invokevirtual org.glassfish.grizzly.servlet.ServletOutputStreamImpl.write:([BII)V
         1: .line 64
            return
        end local 1 // byte[] b
        end local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/glassfish/grizzly/servlet/ServletOutputStreamImpl;
            0    2     1     b  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      b     

  public void write(byte[], int, int);
    descriptor: ([BII)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
        start local 1 // byte[] b
        start local 2 // int off
        start local 3 // int len
         0: .line 68
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.prevIsReady:Z
            ifne 2
         1: .line 69
            new java.lang.IllegalStateException
            dup
            invokestatic org.glassfish.grizzly.localization.LogMessages.WARNING_GRIZZLY_HTTP_SERVLET_NON_BLOCKING_ERROR:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 72
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.outputStream:Lorg/glassfish/grizzly/http/io/NIOOutputStream;
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
            invokevirtual org.glassfish.grizzly.http.io.NIOOutputStream.write:([BII)V
         3: .line 73
            return
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] b
        end local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/glassfish/grizzly/servlet/ServletOutputStreamImpl;
            0    4     1     b  [B
            0    4     2   off  I
            0    4     3   len  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      b     
      off   
      len   

  public void flush();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
         0: .line 80
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.prevIsReady:Z
            ifne 2
         1: .line 81
            new java.lang.IllegalStateException
            dup
            invokestatic org.glassfish.grizzly.localization.LogMessages.WARNING_GRIZZLY_HTTP_SERVLET_NON_BLOCKING_ERROR:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 84
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.outputStream:Lorg/glassfish/grizzly/http/io/NIOOutputStream;
            invokevirtual org.glassfish.grizzly.http.io.NIOOutputStream.flush:()V
         3: .line 85
            return
        end local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/glassfish/grizzly/servlet/ServletOutputStreamImpl;
    Exceptions:
      throws java.io.IOException

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
         0: .line 89
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.prevIsReady:Z
            ifne 2
         1: .line 90
            new java.lang.IllegalStateException
            dup
            invokestatic org.glassfish.grizzly.localization.LogMessages.WARNING_GRIZZLY_HTTP_SERVLET_NON_BLOCKING_ERROR:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 93
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.outputStream:Lorg/glassfish/grizzly/http/io/NIOOutputStream;
            invokevirtual org.glassfish.grizzly.http.io.NIOOutputStream.close:()V
         3: .line 94
            return
        end local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/glassfish/grizzly/servlet/ServletOutputStreamImpl;
    Exceptions:
      throws java.io.IOException

  public boolean isReady();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
         0: .line 101
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.hasSetWriteListener:Z
            ifne 2
         1: .line 102
            new java.lang.IllegalStateException
            dup
            invokestatic org.glassfish.grizzly.localization.LogMessages.WARNING_GRIZZLY_HTTP_SERVLET_OUTPUTSTREAM_ISREADY_ERROR:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 105
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.prevIsReady:Z
            ifne 4
         3: .line 106
            iconst_0
            ireturn
         4: .line 109
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.outputStream:Lorg/glassfish/grizzly/http/io/NIOOutputStream;
            invokevirtual org.glassfish.grizzly.http.io.NIOOutputStream.canWrite:()Z
            istore 1 /* result */
        start local 1 // boolean result
         5: .line 110
            iload 1 /* result */
            ifne 17
         6: .line 111
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.hasSetWriteListener:Z
            ifeq 16
         7: .line 112
            aload 0 /* this */
            iconst_0
            putfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.prevIsReady:Z
         8: .line 113
            getstatic org.glassfish.grizzly.servlet.ServletOutputStreamImpl.CAN_WRITE_SCOPE:Ljava/lang/ThreadLocal;
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
         9: .line 115
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.outputStream:Lorg/glassfish/grizzly/http/io/NIOOutputStream;
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.writeHandler:Lorg/glassfish/grizzly/WriteHandler;
            invokevirtual org.glassfish.grizzly.http.io.NIOOutputStream.notifyCanWrite:(Lorg/glassfish/grizzly/WriteHandler;)V
        10: .line 116
            goto 14
      StackMap locals: org.glassfish.grizzly.servlet.ServletOutputStreamImpl int
      StackMap stack: java.lang.Throwable
        11: astore 2
        12: .line 117
            getstatic org.glassfish.grizzly.servlet.ServletOutputStreamImpl.CAN_WRITE_SCOPE:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.remove:()V
        13: .line 118
            aload 2
            athrow
        14: .line 117
      StackMap locals:
      StackMap stack:
            getstatic org.glassfish.grizzly.servlet.ServletOutputStreamImpl.CAN_WRITE_SCOPE:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.remove:()V
        15: .line 120
            goto 17
        16: .line 121
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.prevIsReady:Z
        17: .line 125
      StackMap locals:
      StackMap stack:
            iload 1 /* result */
            ireturn
        end local 1 // boolean result
        end local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   18     0    this  Lorg/glassfish/grizzly/servlet/ServletOutputStreamImpl;
            5   18     1  result  Z
      Exception table:
        from    to  target  type
           9    11      11  any

  public void setWriteListener(jakarta.servlet.WriteListener);
    descriptor: (Ljakarta/servlet/WriteListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
        start local 1 // jakarta.servlet.WriteListener writeListener
         0: .line 133
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.hasSetWriteListener:Z
            ifeq 2
         1: .line 134
            new java.lang.IllegalStateException
            dup
            ldc "The WriteListener has already been set."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 137
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.servletResponse:Lorg/glassfish/grizzly/servlet/HttpServletResponseImpl;
            getfield org.glassfish.grizzly.servlet.HttpServletResponseImpl.servletRequest:Lorg/glassfish/grizzly/servlet/HttpServletRequestImpl;
            astore 2 /* req */
        start local 2 // org.glassfish.grizzly.servlet.HttpServletRequestImpl req
         3: .line 138
            aload 2 /* req */
            invokevirtual org.glassfish.grizzly.servlet.HttpServletRequestImpl.isAsyncStarted:()Z
            ifne 5
            aload 2 /* req */
            invokevirtual org.glassfish.grizzly.servlet.HttpServletRequestImpl.isUpgrade:()Z
            ifne 5
         4: .line 139
            new java.lang.IllegalStateException
            dup
            invokestatic org.glassfish.grizzly.localization.LogMessages.WARNING_GRIZZLY_HTTP_SERVLET_OUTPUTSTREAM_SETWRITELISTENER_ERROR:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 142
      StackMap locals: org.glassfish.grizzly.servlet.HttpServletRequestImpl
      StackMap stack:
            aload 0 /* this */
            new org.glassfish.grizzly.servlet.ServletOutputStreamImpl$WriteHandlerImpl
            dup
            aload 0 /* this */
            aload 1 /* writeListener */
            invokespecial org.glassfish.grizzly.servlet.ServletOutputStreamImpl$WriteHandlerImpl.<init>:(Lorg/glassfish/grizzly/servlet/ServletOutputStreamImpl;Ljakarta/servlet/WriteListener;)V
            putfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.writeHandler:Lorg/glassfish/grizzly/WriteHandler;
         6: .line 143
            aload 0 /* this */
            iconst_1
            putfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.hasSetWriteListener:Z
         7: .line 144
            return
        end local 2 // org.glassfish.grizzly.servlet.HttpServletRequestImpl req
        end local 1 // jakarta.servlet.WriteListener writeListener
        end local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lorg/glassfish/grizzly/servlet/ServletOutputStreamImpl;
            0    8     1  writeListener  Ljakarta/servlet/WriteListener;
            3    8     2            req  Lorg/glassfish/grizzly/servlet/HttpServletRequestImpl;
    MethodParameters:
               Name  Flags
      writeListener  

  void recycle();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
         0: .line 147
            aload 0 /* this */
            aconst_null
            putfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.outputStream:Lorg/glassfish/grizzly/http/io/NIOOutputStream;
         1: .line 149
            aload 0 /* this */
            aconst_null
            putfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.writeHandler:Lorg/glassfish/grizzly/WriteHandler;
         2: .line 150
            aload 0 /* this */
            iconst_1
            putfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.prevIsReady:Z
         3: .line 151
            aload 0 /* this */
            iconst_0
            putfield org.glassfish.grizzly.servlet.ServletOutputStreamImpl.hasSetWriteListener:Z
         4: .line 152
            return
        end local 0 // org.glassfish.grizzly.servlet.ServletOutputStreamImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/glassfish/grizzly/servlet/ServletOutputStreamImpl;
}
SourceFile: "ServletOutputStreamImpl.java"
NestMembers:
  org.glassfish.grizzly.servlet.ServletOutputStreamImpl$WriteHandlerImpl  org.glassfish.grizzly.servlet.ServletOutputStreamImpl$WriteHandlerImpl$1  org.glassfish.grizzly.servlet.ServletOutputStreamImpl$WriteHandlerImpl$2
InnerClasses:
  WriteHandlerImpl = org.glassfish.grizzly.servlet.ServletOutputStreamImpl$WriteHandlerImpl of org.glassfish.grizzly.servlet.ServletOutputStreamImpl