final class org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse extends org.springframework.http.server.reactive.ServletServerHttpResponse
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse
  super_class: org.springframework.http.server.reactive.ServletServerHttpResponse
{
  private static final java.lang.reflect.Field COYOTE_RESPONSE_FIELD;
    descriptor: Ljava/lang/reflect/Field;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 167
            ldc Lorg/apache/catalina/connector/ResponseFacade;
            ldc "response"
            invokestatic org.springframework.util.ReflectionUtils.findField:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 0 /* field */
        start local 0 // java.lang.reflect.Field field
         1: .line 168
            aload 0 /* field */
            ifnull 2
            iconst_1
            goto 3
      StackMap locals: java.lang.reflect.Field
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ldc "Incompatible Tomcat implementation"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         4: .line 169
            aload 0 /* field */
            invokestatic org.springframework.util.ReflectionUtils.makeAccessible:(Ljava/lang/reflect/Field;)V
         5: .line 170
            aload 0 /* field */
            putstatic org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse.COYOTE_RESPONSE_FIELD:Ljava/lang/reflect/Field;
        end local 0 // java.lang.reflect.Field field
         6: .line 171
            return
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            1    6     0  field  Ljava/lang/reflect/Field;

  void <init>(javax.servlet.http.HttpServletResponse, javax.servlet.AsyncContext, org.springframework.core.io.buffer.DataBufferFactory, int, org.springframework.http.server.reactive.ServletServerHttpRequest);
    descriptor: (Ljavax/servlet/http/HttpServletResponse;Ljavax/servlet/AsyncContext;Lorg/springframework/core/io/buffer/DataBufferFactory;ILorg/springframework/http/server/reactive/ServletServerHttpRequest;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=6, args_size=6
        start local 0 // org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse this
        start local 1 // javax.servlet.http.HttpServletResponse response
        start local 2 // javax.servlet.AsyncContext context
        start local 3 // org.springframework.core.io.buffer.DataBufferFactory factory
        start local 4 // int bufferSize
        start local 5 // org.springframework.http.server.reactive.ServletServerHttpRequest request
         0: .line 176
            aload 0 /* this */
            aload 1 /* response */
            invokestatic org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse.createTomcatHttpHeaders:(Ljavax/servlet/http/HttpServletResponse;)Lorg/springframework/http/HttpHeaders;
            aload 1 /* response */
            aload 2 /* context */
            aload 3 /* factory */
            iload 4 /* bufferSize */
            aload 5 /* request */
            invokespecial org.springframework.http.server.reactive.ServletServerHttpResponse.<init>:(Lorg/springframework/http/HttpHeaders;Ljavax/servlet/http/HttpServletResponse;Ljavax/servlet/AsyncContext;Lorg/springframework/core/io/buffer/DataBufferFactory;ILorg/springframework/http/server/reactive/ServletServerHttpRequest;)V
         1: .line 177
            return
        end local 5 // org.springframework.http.server.reactive.ServletServerHttpRequest request
        end local 4 // int bufferSize
        end local 3 // org.springframework.core.io.buffer.DataBufferFactory factory
        end local 2 // javax.servlet.AsyncContext context
        end local 1 // javax.servlet.http.HttpServletResponse response
        end local 0 // org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/springframework/http/server/reactive/TomcatHttpHandlerAdapter$TomcatServerHttpResponse;
            0    2     1    response  Ljavax/servlet/http/HttpServletResponse;
            0    2     2     context  Ljavax/servlet/AsyncContext;
            0    2     3     factory  Lorg/springframework/core/io/buffer/DataBufferFactory;
            0    2     4  bufferSize  I
            0    2     5     request  Lorg/springframework/http/server/reactive/ServletServerHttpRequest;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      response    
      context     
      factory     
      bufferSize  
      request     

  private static org.springframework.http.HttpHeaders createTomcatHttpHeaders(javax.servlet.http.HttpServletResponse);
    descriptor: (Ljavax/servlet/http/HttpServletResponse;)Lorg/springframework/http/HttpHeaders;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // javax.servlet.http.HttpServletResponse response
         0: .line 180
            aload 0 /* response */
            invokestatic org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse.getResponseFacade:(Ljavax/servlet/http/HttpServletResponse;)Lorg/apache/catalina/connector/ResponseFacade;
            astore 1 /* responseFacade */
        start local 1 // org.apache.catalina.connector.ResponseFacade responseFacade
         1: .line 182
            getstatic org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse.COYOTE_RESPONSE_FIELD:Ljava/lang/reflect/Field;
            aload 1 /* responseFacade */
            invokestatic org.springframework.util.ReflectionUtils.getField:(Ljava/lang/reflect/Field;Ljava/lang/Object;)Ljava/lang/Object;
         2: .line 181
            checkcast org.apache.catalina.connector.Response
            astore 2 /* connectorResponse */
        start local 2 // org.apache.catalina.connector.Response connectorResponse
         3: .line 183
            aload 2 /* connectorResponse */
            ifnull 4
            iconst_1
            goto 5
      StackMap locals: org.apache.catalina.connector.ResponseFacade org.apache.catalina.connector.Response
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: ldc "No Tomcat connector response"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         6: .line 184
            aload 2 /* connectorResponse */
            invokevirtual org.apache.catalina.connector.Response.getCoyoteResponse:()Lorg/apache/coyote/Response;
            astore 3 /* tomcatResponse */
        start local 3 // org.apache.coyote.Response tomcatResponse
         7: .line 185
            new org.springframework.http.server.reactive.TomcatHeadersAdapter
            dup
            aload 3 /* tomcatResponse */
            invokevirtual org.apache.coyote.Response.getMimeHeaders:()Lorg/apache/tomcat/util/http/MimeHeaders;
            invokespecial org.springframework.http.server.reactive.TomcatHeadersAdapter.<init>:(Lorg/apache/tomcat/util/http/MimeHeaders;)V
            astore 4 /* headers */
        start local 4 // org.springframework.http.server.reactive.TomcatHeadersAdapter headers
         8: .line 186
            new org.springframework.http.HttpHeaders
            dup
            aload 4 /* headers */
            invokespecial org.springframework.http.HttpHeaders.<init>:(Lorg/springframework/util/MultiValueMap;)V
            areturn
        end local 4 // org.springframework.http.server.reactive.TomcatHeadersAdapter headers
        end local 3 // org.apache.coyote.Response tomcatResponse
        end local 2 // org.apache.catalina.connector.Response connectorResponse
        end local 1 // org.apache.catalina.connector.ResponseFacade responseFacade
        end local 0 // javax.servlet.http.HttpServletResponse response
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    9     0           response  Ljavax/servlet/http/HttpServletResponse;
            1    9     1     responseFacade  Lorg/apache/catalina/connector/ResponseFacade;
            3    9     2  connectorResponse  Lorg/apache/catalina/connector/Response;
            7    9     3     tomcatResponse  Lorg/apache/coyote/Response;
            8    9     4            headers  Lorg/springframework/http/server/reactive/TomcatHeadersAdapter;
    MethodParameters:
          Name  Flags
      response  

  private static org.apache.catalina.connector.ResponseFacade getResponseFacade(javax.servlet.http.HttpServletResponse);
    descriptor: (Ljavax/servlet/http/HttpServletResponse;)Lorg/apache/catalina/connector/ResponseFacade;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // javax.servlet.http.HttpServletResponse response
         0: .line 190
            aload 0 /* response */
            instanceof org.apache.catalina.connector.ResponseFacade
            ifeq 2
         1: .line 191
            aload 0 /* response */
            checkcast org.apache.catalina.connector.ResponseFacade
            areturn
         2: .line 193
      StackMap locals:
      StackMap stack:
            aload 0 /* response */
            instanceof javax.servlet.http.HttpServletResponseWrapper
            ifeq 6
         3: .line 194
            aload 0 /* response */
            checkcast javax.servlet.http.HttpServletResponseWrapper
            astore 1 /* wrapper */
        start local 1 // javax.servlet.http.HttpServletResponseWrapper wrapper
         4: .line 195
            aload 1 /* wrapper */
            invokevirtual javax.servlet.http.HttpServletResponseWrapper.getResponse:()Ljavax/servlet/ServletResponse;
            checkcast javax.servlet.http.HttpServletResponse
            astore 2 /* wrappedResponse */
        start local 2 // javax.servlet.http.HttpServletResponse wrappedResponse
         5: .line 196
            aload 2 /* wrappedResponse */
            invokestatic org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse.getResponseFacade:(Ljavax/servlet/http/HttpServletResponse;)Lorg/apache/catalina/connector/ResponseFacade;
            areturn
        end local 2 // javax.servlet.http.HttpServletResponse wrappedResponse
        end local 1 // javax.servlet.http.HttpServletResponseWrapper wrapper
         6: .line 199
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot convert ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* response */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         7: .line 200
            ldc "] to org.apache.catalina.connector.ResponseFacade"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 199
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // javax.servlet.http.HttpServletResponse response
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    9     0         response  Ljavax/servlet/http/HttpServletResponse;
            4    6     1          wrapper  Ljavax/servlet/http/HttpServletResponseWrapper;
            5    6     2  wrappedResponse  Ljavax/servlet/http/HttpServletResponse;
    MethodParameters:
          Name  Flags
      response  

  protected void applyHeaders();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse this
         0: .line 217
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tThe method setContentLengthLong(long) is undefined for the type HttpServletResponse\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/http/server/reactive/TomcatHttpHandlerAdapter$TomcatServerHttpResponse;

  protected int writeToOutputStream(org.springframework.core.io.buffer.DataBuffer);
    descriptor: (Lorg/springframework/core/io/buffer/DataBuffer;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse this
        start local 1 // org.springframework.core.io.buffer.DataBuffer dataBuffer
         0: .line 223
            aload 1 /* dataBuffer */
            invokeinterface org.springframework.core.io.buffer.DataBuffer.asByteBuffer:()Ljava/nio/ByteBuffer;
            astore 2 /* input */
        start local 2 // java.nio.ByteBuffer input
         1: .line 224
            aload 2 /* input */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 3 /* len */
        start local 3 // int len
         2: .line 225
            aload 0 /* this */
            invokevirtual org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse.getNativeResponse:()Ljava/lang/Object;
            checkcast javax.servlet.ServletResponse
            astore 4 /* response */
        start local 4 // javax.servlet.ServletResponse response
         3: .line 226
            aload 4 /* response */
            invokeinterface javax.servlet.ServletResponse.getOutputStream:()Ljavax/servlet/ServletOutputStream;
            checkcast org.apache.catalina.connector.CoyoteOutputStream
            aload 2 /* input */
            invokevirtual org.apache.catalina.connector.CoyoteOutputStream.write:(Ljava/nio/ByteBuffer;)V
         4: .line 227
            iload 3 /* len */
            ireturn
        end local 4 // javax.servlet.ServletResponse response
        end local 3 // int len
        end local 2 // java.nio.ByteBuffer input
        end local 1 // org.springframework.core.io.buffer.DataBuffer dataBuffer
        end local 0 // org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lorg/springframework/http/server/reactive/TomcatHttpHandlerAdapter$TomcatServerHttpResponse;
            0    5     1  dataBuffer  Lorg/springframework/core/io/buffer/DataBuffer;
            1    5     2       input  Ljava/nio/ByteBuffer;
            2    5     3         len  I
            3    5     4    response  Ljavax/servlet/ServletResponse;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      dataBuffer  
}
SourceFile: "TomcatHttpHandlerAdapter.java"
NestHost: org.springframework.http.server.reactive.TomcatHttpHandlerAdapter
InnerClasses:
  private final TomcatServerHttpResponse = org.springframework.http.server.reactive.TomcatHttpHandlerAdapter$TomcatServerHttpResponse of org.springframework.http.server.reactive.TomcatHttpHandlerAdapter