class jdk.incubator.http.Http1Exchange<T> extends jdk.incubator.http.ExchangeImpl<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: jdk.incubator.http.Http1Exchange
  super_class: jdk.incubator.http.ExchangeImpl
{
  final jdk.incubator.http.HttpRequestImpl request;
    descriptor: Ljdk/incubator/http/HttpRequestImpl;
    flags: (0x0010) ACC_FINAL

  private final java.util.List<java.util.concurrent.CompletableFuture<?>> operations;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljava/util/concurrent/CompletableFuture<*>;>;

  final jdk.incubator.http.Http1Request requestAction;
    descriptor: Ljdk/incubator/http/Http1Request;
    flags: (0x0010) ACC_FINAL

  private volatile jdk.incubator.http.Http1Response<T> response;
    descriptor: Ljdk/incubator/http/Http1Response;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Ljdk/incubator/http/Http1Response<TT;>;

  private java.io.IOException failed;
    descriptor: Ljava/io/IOException;
    flags: (0x0002) ACC_PRIVATE

  final jdk.incubator.http.HttpConnection connection;
    descriptor: Ljdk/incubator/http/HttpConnection;
    flags: (0x0010) ACC_FINAL

  final jdk.incubator.http.HttpClientImpl client;
    descriptor: Ljdk/incubator/http/HttpClientImpl;
    flags: (0x0010) ACC_FINAL

  final java.util.concurrent.Executor executor;
    descriptor: Ljava/util/concurrent/Executor;
    flags: (0x0010) ACC_FINAL

  volatile java.nio.ByteBuffer buffer;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0040) ACC_VOLATILE

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.http.Http1Exchange this
         0: .line 62
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.request:Ljdk/incubator/http/HttpRequestImpl;
            invokevirtual jdk.incubator.http.HttpRequestImpl.toString:()Ljava/lang/String;
            areturn
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/Http1Exchange<TT;>;

  jdk.incubator.http.HttpRequestImpl request();
    descriptor: ()Ljdk/incubator/http/HttpRequestImpl;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.http.Http1Exchange this
         0: .line 66
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.request:Ljdk/incubator/http/HttpRequestImpl;
            areturn
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/Http1Exchange<TT;>;

  void <init>(jdk.incubator.http.Exchange<T>, jdk.incubator.http.HttpConnection);
    descriptor: (Ljdk/incubator/http/Exchange;Ljdk/incubator/http/HttpConnection;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // jdk.incubator.http.Http1Exchange this
        start local 1 // jdk.incubator.http.Exchange exchange
        start local 2 // jdk.incubator.http.HttpConnection connection
         0: .line 72
            aload 0 /* this */
            aload 1 /* exchange */
            invokespecial jdk.incubator.http.ExchangeImpl.<init>:(Ljdk/incubator/http/Exchange;)V
         1: .line 73
            aload 0 /* this */
            aload 1 /* exchange */
            invokevirtual jdk.incubator.http.Exchange.request:()Ljdk/incubator/http/HttpRequestImpl;
            putfield jdk.incubator.http.Http1Exchange.request:Ljdk/incubator/http/HttpRequestImpl;
         2: .line 74
            aload 0 /* this */
            aload 1 /* exchange */
            invokevirtual jdk.incubator.http.Exchange.client:()Ljdk/incubator/http/HttpClientImpl;
            putfield jdk.incubator.http.Http1Exchange.client:Ljdk/incubator/http/HttpClientImpl;
         3: .line 75
            aload 0 /* this */
            aload 1 /* exchange */
            invokevirtual jdk.incubator.http.Exchange.executor:()Ljava/util/concurrent/Executor;
            putfield jdk.incubator.http.Http1Exchange.executor:Ljava/util/concurrent/Executor;
         4: .line 76
            aload 0 /* this */
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putfield jdk.incubator.http.Http1Exchange.operations:Ljava/util/List;
         5: .line 77
            aload 0 /* this */
            getstatic jdk.incubator.http.internal.common.Utils.EMPTY_BYTEBUFFER:Ljava/nio/ByteBuffer;
            putfield jdk.incubator.http.Http1Exchange.buffer:Ljava/nio/ByteBuffer;
         6: .line 78
            aload 2 /* connection */
            ifnull 9
         7: .line 79
            aload 0 /* this */
            aload 2 /* connection */
            putfield jdk.incubator.http.Http1Exchange.connection:Ljdk/incubator/http/HttpConnection;
         8: .line 80
            goto 11
         9: .line 81
      StackMap locals: jdk.incubator.http.Http1Exchange jdk.incubator.http.Exchange jdk.incubator.http.HttpConnection
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.request:Ljdk/incubator/http/HttpRequestImpl;
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.client:Ljdk/incubator/http/HttpClientImpl;
            invokevirtual jdk.incubator.http.HttpRequestImpl.getAddress:(Ljdk/incubator/http/HttpClientImpl;)Ljava/net/InetSocketAddress;
            astore 3 /* addr */
        start local 3 // java.net.InetSocketAddress addr
        10: .line 82
            aload 0 /* this */
            aload 3 /* addr */
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.client:Ljdk/incubator/http/HttpClientImpl;
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.request:Ljdk/incubator/http/HttpRequestImpl;
            invokestatic jdk.incubator.http.HttpConnection.getConnection:(Ljava/net/InetSocketAddress;Ljdk/incubator/http/HttpClientImpl;Ljdk/incubator/http/HttpRequestImpl;)Ljdk/incubator/http/HttpConnection;
            putfield jdk.incubator.http.Http1Exchange.connection:Ljdk/incubator/http/HttpConnection;
        end local 3 // java.net.InetSocketAddress addr
        11: .line 84
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new jdk.incubator.http.Http1Request
            dup
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.request:Ljdk/incubator/http/HttpRequestImpl;
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.client:Ljdk/incubator/http/HttpClientImpl;
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.connection:Ljdk/incubator/http/HttpConnection;
            invokespecial jdk.incubator.http.Http1Request.<init>:(Ljdk/incubator/http/HttpRequestImpl;Ljdk/incubator/http/HttpClientImpl;Ljdk/incubator/http/HttpConnection;)V
            putfield jdk.incubator.http.Http1Exchange.requestAction:Ljdk/incubator/http/Http1Request;
        12: .line 85
            return
        end local 2 // jdk.incubator.http.HttpConnection connection
        end local 1 // jdk.incubator.http.Exchange exchange
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0        this  Ljdk/incubator/http/Http1Exchange<TT;>;
            0   13     1    exchange  Ljdk/incubator/http/Exchange<TT;>;
            0   13     2  connection  Ljdk/incubator/http/HttpConnection;
           10   11     3        addr  Ljava/net/InetSocketAddress;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljdk/incubator/http/Exchange<TT;>;Ljdk/incubator/http/HttpConnection;)V
    MethodParameters:
            Name  Flags
      exchange    
      connection  

  jdk.incubator.http.HttpConnection connection();
    descriptor: ()Ljdk/incubator/http/HttpConnection;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.http.Http1Exchange this
         0: .line 89
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.connection:Ljdk/incubator/http/HttpConnection;
            areturn
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/Http1Exchange<TT;>;

  T readBody(jdk.incubator.http.HttpResponse$BodyHandler<T>, );
    descriptor: (Ljdk/incubator/http/HttpResponse$BodyHandler;Z)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // jdk.incubator.http.Http1Exchange this
        start local 1 // jdk.incubator.http.HttpResponse$BodyHandler handler
        start local 2 // boolean returnConnectionToPool
         0: .line 97
            aload 1 /* handler */
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
            invokevirtual jdk.incubator.http.Http1Response.responseCode:()I
         1: .line 98
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
            invokevirtual jdk.incubator.http.Http1Response.responseHeaders:()Ljdk/incubator/http/HttpHeaders;
         2: .line 97
            invokeinterface jdk.incubator.http.HttpResponse$BodyHandler.apply:(ILjdk/incubator/http/HttpHeaders;)Ljdk/incubator/http/HttpResponse$BodyProcessor;
            astore 3 /* processor */
        start local 3 // jdk.incubator.http.HttpResponse$BodyProcessor processor
         3: .line 99
            aload 0 /* this */
            aload 3 /* processor */
            invokevirtual jdk.incubator.http.Http1Exchange.setClientForResponse:(Ljdk/incubator/http/HttpResponse$BodyProcessor;)V
         4: .line 100
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
            aload 3 /* processor */
         5: .line 101
            iload 2 /* returnConnectionToPool */
         6: .line 102
            aload 0 /* this */
            invokedynamic execute(Ljdk/incubator/http/Http1Exchange;)Ljava/util/concurrent/Executor;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Runnable;)V
                  jdk/incubator/http/Http1Exchange.executeInline(Ljava/lang/Runnable;)V (7)
                  (Ljava/lang/Runnable;)V
         7: .line 100
            invokevirtual jdk.incubator.http.Http1Response.readBody:(Ljdk/incubator/http/HttpResponse$BodyProcessor;ZLjava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
            astore 4 /* bodyCF */
        start local 4 // java.util.concurrent.CompletableFuture bodyCF
         8: .line 104
            aload 4 /* bodyCF */
            invokevirtual java.util.concurrent.CompletableFuture.join:()Ljava/lang/Object;
         9: areturn
        10: .line 105
      StackMap locals: jdk.incubator.http.Http1Exchange jdk.incubator.http.HttpResponse$BodyHandler int jdk.incubator.http.HttpResponse$BodyProcessor java.util.concurrent.CompletableFuture
      StackMap stack: java.util.concurrent.CompletionException
            astore 6 /* e */
        start local 6 // java.util.concurrent.CompletionException e
        11: .line 106
            aload 6 /* e */
            invokestatic jdk.incubator.http.internal.common.Utils.getIOException:(Ljava/lang/Throwable;)Ljava/io/IOException;
            athrow
        end local 6 // java.util.concurrent.CompletionException e
        end local 4 // java.util.concurrent.CompletableFuture bodyCF
        end local 3 // jdk.incubator.http.HttpResponse$BodyProcessor processor
        end local 2 // boolean returnConnectionToPool
        end local 1 // jdk.incubator.http.HttpResponse$BodyHandler handler
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   12     0                    this  Ljdk/incubator/http/Http1Exchange<TT;>;
            0   12     1                 handler  Ljdk/incubator/http/HttpResponse$BodyHandler<TT;>;
            0   12     2  returnConnectionToPool  Z
            3   12     3               processor  Ljdk/incubator/http/HttpResponse$BodyProcessor<TT;>;
            8   12     4                  bodyCF  Ljava/util/concurrent/CompletableFuture<TT;>;
           11   12     6                       e  Ljava/util/concurrent/CompletionException;
      Exception table:
        from    to  target  type
           8     9      10  Class java.util.concurrent.CompletionException
    Exceptions:
      throws java.io.IOException
    Signature: (Ljdk/incubator/http/HttpResponse$BodyHandler<TT;>;Z)TT;
    MethodParameters:
                        Name  Flags
      handler                 
      returnConnectionToPool  

  private void executeInline(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // jdk.incubator.http.Http1Exchange this
        start local 1 // java.lang.Runnable r
         0: .line 111
            aload 1 /* r */
            invokeinterface java.lang.Runnable.run:()V
         1: .line 112
            return
        end local 1 // java.lang.Runnable r
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/incubator/http/Http1Exchange<TT;>;
            0    2     1     r  Ljava/lang/Runnable;
    MethodParameters:
      Name  Flags
      r     

  synchronized java.nio.ByteBuffer getBuffer();
    descriptor: ()Ljava/nio/ByteBuffer;
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.http.Http1Exchange this
         0: .line 115
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.buffer:Ljava/nio/ByteBuffer;
            areturn
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/Http1Exchange<TT;>;

  java.util.concurrent.CompletableFuture<T> readBodyAsync(jdk.incubator.http.HttpResponse$BodyHandler<T>, boolean, java.util.concurrent.Executor);
    descriptor: (Ljdk/incubator/http/HttpResponse$BodyHandler;ZLjava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // jdk.incubator.http.Http1Exchange this
        start local 1 // jdk.incubator.http.HttpResponse$BodyHandler handler
        start local 2 // boolean returnConnectionToPool
        start local 3 // java.util.concurrent.Executor executor
         0: .line 123
            aload 1 /* handler */
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
            invokevirtual jdk.incubator.http.Http1Response.responseCode:()I
         1: .line 124
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
            invokevirtual jdk.incubator.http.Http1Response.responseHeaders:()Ljdk/incubator/http/HttpHeaders;
         2: .line 123
            invokeinterface jdk.incubator.http.HttpResponse$BodyHandler.apply:(ILjdk/incubator/http/HttpHeaders;)Ljdk/incubator/http/HttpResponse$BodyProcessor;
            astore 4 /* processor */
        start local 4 // jdk.incubator.http.HttpResponse$BodyProcessor processor
         3: .line 125
            aload 0 /* this */
            aload 4 /* processor */
            invokevirtual jdk.incubator.http.Http1Exchange.setClientForResponse:(Ljdk/incubator/http/HttpResponse$BodyProcessor;)V
         4: .line 126
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
            aload 4 /* processor */
         5: .line 127
            iload 2 /* returnConnectionToPool */
         6: .line 128
            aload 3 /* executor */
         7: .line 126
            invokevirtual jdk.incubator.http.Http1Response.readBody:(Ljdk/incubator/http/HttpResponse$BodyProcessor;ZLjava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
            astore 5 /* bodyCF */
        start local 5 // java.util.concurrent.CompletableFuture bodyCF
         8: .line 129
            aload 5 /* bodyCF */
            areturn
        end local 5 // java.util.concurrent.CompletableFuture bodyCF
        end local 4 // jdk.incubator.http.HttpResponse$BodyProcessor processor
        end local 3 // java.util.concurrent.Executor executor
        end local 2 // boolean returnConnectionToPool
        end local 1 // jdk.incubator.http.HttpResponse$BodyHandler handler
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    9     0                    this  Ljdk/incubator/http/Http1Exchange<TT;>;
            0    9     1                 handler  Ljdk/incubator/http/HttpResponse$BodyHandler<TT;>;
            0    9     2  returnConnectionToPool  Z
            0    9     3                executor  Ljava/util/concurrent/Executor;
            3    9     4               processor  Ljdk/incubator/http/HttpResponse$BodyProcessor<TT;>;
            8    9     5                  bodyCF  Ljava/util/concurrent/CompletableFuture<TT;>;
    Signature: (Ljdk/incubator/http/HttpResponse$BodyHandler<TT;>;ZLjava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture<TT;>;
    MethodParameters:
                        Name  Flags
      handler                 
      returnConnectionToPool  
      executor                

  void sendHeadersOnly();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // jdk.incubator.http.Http1Exchange this
         0: .line 135
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.connection:Ljdk/incubator/http/HttpConnection;
            invokevirtual jdk.incubator.http.HttpConnection.connected:()Z
            ifne 2
         1: .line 136
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.connection:Ljdk/incubator/http/HttpConnection;
            invokevirtual jdk.incubator.http.HttpConnection.connect:()V
         2: .line 138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.requestAction:Ljdk/incubator/http/Http1Request;
            invokevirtual jdk.incubator.http.Http1Request.sendHeadersOnly:()V
         3: .line 139
            goto 7
      StackMap locals:
      StackMap stack: java.lang.Throwable
         4: astore 1 /* e */
        start local 1 // java.lang.Throwable e
         5: .line 140
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.connection:Ljdk/incubator/http/HttpConnection;
            invokevirtual jdk.incubator.http.HttpConnection.close:()V
         6: .line 141
            aload 1 /* e */
            athrow
        end local 1 // java.lang.Throwable e
         7: .line 143
      StackMap locals:
      StackMap stack:
            return
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Ljdk/incubator/http/Http1Exchange<TT;>;
            5    7     1     e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.Throwable
    Exceptions:
      throws java.io.IOException, java.lang.InterruptedException

  void sendBody();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // jdk.incubator.http.Http1Exchange this
         0: .line 148
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.requestAction:Ljdk/incubator/http/Http1Request;
            invokevirtual jdk.incubator.http.Http1Request.continueRequest:()V
         1: .line 149
            goto 5
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: astore 1 /* e */
        start local 1 // java.lang.Throwable e
         3: .line 150
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.connection:Ljdk/incubator/http/HttpConnection;
            invokevirtual jdk.incubator.http.HttpConnection.close:()V
         4: .line 151
            aload 1 /* e */
            athrow
        end local 1 // java.lang.Throwable e
         5: .line 153
      StackMap locals:
      StackMap stack:
            return
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljdk/incubator/http/Http1Exchange<TT;>;
            3    5     1     e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Throwable
    Exceptions:
      throws java.io.IOException

  jdk.incubator.http.Response getResponse();
    descriptor: ()Ljdk/incubator/http/Response;
    flags: (0x0000) 
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // jdk.incubator.http.Http1Exchange this
         0: .line 158
            aload 0 /* this */
            new jdk.incubator.http.Http1Response
            dup
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.connection:Ljdk/incubator/http/HttpConnection;
            aload 0 /* this */
            invokespecial jdk.incubator.http.Http1Response.<init>:(Ljdk/incubator/http/HttpConnection;Ljdk/incubator/http/Http1Exchange;)V
            putfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
         1: .line 159
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
            invokevirtual jdk.incubator.http.Http1Response.readHeaders:()V
         2: .line 160
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
            invokevirtual jdk.incubator.http.Http1Response.response:()Ljdk/incubator/http/Response;
            astore 1 /* r */
        start local 1 // jdk.incubator.http.Response r
         3: .line 161
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
            invokevirtual jdk.incubator.http.Http1Response.getBuffer:()Ljava/nio/ByteBuffer;
            putfield jdk.incubator.http.Http1Exchange.buffer:Ljava/nio/ByteBuffer;
         4: .line 162
            aload 1 /* r */
         5: areturn
        end local 1 // jdk.incubator.http.Response r
         6: .line 163
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 1 /* t */
        start local 1 // java.lang.Throwable t
         7: .line 164
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.connection:Ljdk/incubator/http/HttpConnection;
            invokevirtual jdk.incubator.http.HttpConnection.close:()V
         8: .line 165
            aload 1 /* t */
            athrow
        end local 1 // java.lang.Throwable t
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Ljdk/incubator/http/Http1Exchange<TT;>;
            3    6     1     r  Ljdk/incubator/http/Response;
            7    9     1     t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     5       6  Class java.lang.Throwable
    Exceptions:
      throws java.io.IOException

  private void closeConnection();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.http.Http1Exchange this
         0: .line 170
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.connection:Ljdk/incubator/http/HttpConnection;
            invokevirtual jdk.incubator.http.HttpConnection.close:()V
         1: .line 171
            return
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/incubator/http/Http1Exchange<TT;>;

  void cancel();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // jdk.incubator.http.Http1Exchange this
         0: .line 179
            aload 0 /* this */
            new java.io.IOException
            dup
            ldc "Request cancelled"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            invokevirtual jdk.incubator.http.Http1Exchange.cancel:(Ljava/io/IOException;)V
         1: .line 180
            return
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/incubator/http/Http1Exchange<TT;>;

  synchronized void cancel(java.io.IOException);
    descriptor: (Ljava/io/IOException;)V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=8, locals=5, args_size=2
        start local 0 // jdk.incubator.http.Http1Exchange this
        start local 1 // java.io.IOException cause
         0: .line 188
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.requestAction:Ljdk/incubator/http/Http1Request;
            ifnull 3
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.requestAction:Ljdk/incubator/http/Http1Request;
            invokevirtual jdk.incubator.http.Http1Request.finished:()Z
            ifeq 3
         1: .line 189
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
            ifnull 3
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
            invokevirtual jdk.incubator.http.Http1Response.finished:()Z
            ifeq 3
         2: .line 190
            return
         3: .line 192
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.connection:Ljdk/incubator/http/HttpConnection;
            invokevirtual jdk.incubator.http.HttpConnection.close:()V
         4: .line 193
            iconst_0
            istore 2 /* count */
        start local 2 // int count
         5: .line 194
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.operations:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 17
         6: .line 195
            aload 0 /* this */
            aload 1 /* cause */
            putfield jdk.incubator.http.Http1Exchange.failed:Ljava/io/IOException;
         7: .line 196
            ldc "Http1Exchange: request [{0}/timeout={1}ms] no pending operation.\n\tCan''t cancel yet with {2}"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         8: .line 198
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.request:Ljdk/incubator/http/HttpRequestImpl;
            invokevirtual jdk.incubator.http.HttpRequestImpl.uri:()Ljava/net/URI;
            aastore
            dup
            iconst_1
         9: .line 199
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.request:Ljdk/incubator/http/HttpRequestImpl;
            invokevirtual jdk.incubator.http.HttpRequestImpl.duration:()Ljava/time/Duration;
            ifnonnull 10
            ldc -1
            goto 13
        10: .line 202
      StackMap locals: jdk.incubator.http.Http1Exchange java.io.IOException int
      StackMap stack: java.lang.String java.lang.Object[] java.lang.Object[] int
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.request:Ljdk/incubator/http/HttpRequestImpl;
            invokevirtual jdk.incubator.http.HttpRequestImpl.duration:()Ljava/time/Duration;
            invokevirtual java.time.Duration.getSeconds:()J
            ldc 1000
            lmul
        11: .line 203
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.request:Ljdk/incubator/http/HttpRequestImpl;
            invokevirtual jdk.incubator.http.HttpRequestImpl.duration:()Ljava/time/Duration;
            invokevirtual java.time.Duration.getNano:()I
            ldc 1000000
            idiv
            i2l
        12: .line 202
            ladd
        13: .line 199
      StackMap locals: jdk.incubator.http.Http1Exchange java.io.IOException int
      StackMap stack: java.lang.String java.lang.Object[] java.lang.Object[] int long
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_2
        14: .line 204
            aload 1 /* cause */
            aastore
        15: .line 196
            invokestatic jdk.incubator.http.internal.common.Log.logTrace:(Ljava/lang/String;[Ljava/lang/Object;)V
        16: .line 205
            goto 22
        17: .line 206
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.operations:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 21
      StackMap locals: jdk.incubator.http.Http1Exchange java.io.IOException int top java.util.Iterator
      StackMap stack:
        18: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.concurrent.CompletableFuture
            astore 3 /* cf */
        start local 3 // java.util.concurrent.CompletableFuture cf
        19: .line 207
            aload 3 /* cf */
            aload 1 /* cause */
            invokevirtual java.util.concurrent.CompletableFuture.completeExceptionally:(Ljava/lang/Throwable;)Z
            pop
        20: .line 208
            iinc 2 /* count */ 1
        end local 3 // java.util.concurrent.CompletableFuture cf
        21: .line 206
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 18
        22: .line 211
      StackMap locals: jdk.incubator.http.Http1Exchange java.io.IOException int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "Http1Exchange.cancel: count="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* count */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokestatic jdk.incubator.http.internal.common.Log.logError:(Ljava/lang/String;[Ljava/lang/Object;)V
        23: .line 212
            return
        end local 2 // int count
        end local 1 // java.io.IOException cause
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   24     0   this  Ljdk/incubator/http/Http1Exchange<TT;>;
            0   24     1  cause  Ljava/io/IOException;
            5   24     2  count  I
           19   21     3     cf  Ljava/util/concurrent/CompletableFuture<*>;
    MethodParameters:
       Name  Flags
      cause  

  java.util.concurrent.CompletableFuture<jdk.incubator.http.Response> getResponseAsyncImpl(java.util.concurrent.Executor);
    descriptor: (Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.incubator.http.Http1Exchange this
        start local 1 // java.util.concurrent.Executor executor
         0: .line 215
            aload 0 /* this */
            invokedynamic get(Ljdk/incubator/http/Http1Exchange;)Ljdk/incubator/http/internal/common/MinimalFuture$ExceptionalSupplier;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  jdk/incubator/http/Http1Exchange.lambda$1()Ljdk/incubator/http/Response; (7)
                  ()Ljdk/incubator/http/Response;
         1: .line 221
            aload 1 /* executor */
         2: .line 215
            invokestatic jdk.incubator.http.internal.common.MinimalFuture.supply:(Ljdk/incubator/http/internal/common/MinimalFuture$ExceptionalSupplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
            areturn
        end local 1 // java.util.concurrent.Executor executor
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Ljdk/incubator/http/Http1Exchange<TT;>;
            0    3     1  executor  Ljava/util/concurrent/Executor;
    Signature: (Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture<Ljdk/incubator/http/Response;>;
    MethodParameters:
          Name  Flags
      executor  

  java.util.concurrent.CompletableFuture<jdk.incubator.http.Response> getResponseAsync(java.util.concurrent.Executor);
    descriptor: (Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
    flags: (0x0000) 
    Code:
      stack=8, locals=5, args_size=2
        start local 0 // jdk.incubator.http.Http1Exchange this
        start local 1 // java.util.concurrent.Executor executor
         0: .line 227
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.connection:Ljdk/incubator/http/HttpConnection;
            invokevirtual jdk.incubator.http.HttpConnection.whenReceivingResponse:()Ljava/util/concurrent/CompletableFuture;
         1: .line 228
            aload 0 /* this */
            aload 1 /* executor */
            invokedynamic apply(Ljdk/incubator/http/Http1Exchange;Ljava/util/concurrent/Executor;)Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  jdk/incubator/http/Http1Exchange.lambda$2(Ljava/util/concurrent/Executor;Ljava/lang/Void;)Ljava/util/concurrent/CompletionStage; (7)
                  (Ljava/lang/Void;)Ljava/util/concurrent/CompletionStage;
            invokevirtual java.util.concurrent.CompletableFuture.thenCompose:(Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;
         2: .line 226
            astore 2 /* cf */
        start local 2 // java.util.concurrent.CompletableFuture cf
         3: .line 230
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         4: .line 231
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.operations:Ljava/util/List;
            aload 2 /* cf */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         5: .line 232
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.failed:Ljava/io/IOException;
            astore 3 /* cause */
        start local 3 // java.io.IOException cause
         6: .line 233
            aload 0 /* this */
            aconst_null
            putfield jdk.incubator.http.Http1Exchange.failed:Ljava/io/IOException;
         7: .line 230
            aload 4
            monitorexit
         8: goto 11
        end local 3 // java.io.IOException cause
      StackMap locals: jdk.incubator.http.Http1Exchange java.util.concurrent.Executor java.util.concurrent.CompletableFuture top jdk.incubator.http.Http1Exchange
      StackMap stack: java.lang.Throwable
         9: aload 4
            monitorexit
        10: athrow
        start local 3 // java.io.IOException cause
        11: .line 235
      StackMap locals: jdk.incubator.http.Http1Exchange java.util.concurrent.Executor java.util.concurrent.CompletableFuture java.io.IOException
      StackMap stack:
            aload 3 /* cause */
            ifnull 22
        12: .line 236
            ldc "Http1Exchange: request [{0}/timeout={1}ms]\n\tCompleting exceptionally with {2}\n"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        13: .line 238
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.request:Ljdk/incubator/http/HttpRequestImpl;
            invokevirtual jdk.incubator.http.HttpRequestImpl.uri:()Ljava/net/URI;
            aastore
            dup
            iconst_1
        14: .line 239
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.request:Ljdk/incubator/http/HttpRequestImpl;
            invokevirtual jdk.incubator.http.HttpRequestImpl.duration:()Ljava/time/Duration;
            ifnonnull 15
            ldc -1
            goto 18
        15: .line 242
      StackMap locals: jdk.incubator.http.Http1Exchange java.util.concurrent.Executor java.util.concurrent.CompletableFuture java.io.IOException
      StackMap stack: java.lang.String java.lang.Object[] java.lang.Object[] int
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.request:Ljdk/incubator/http/HttpRequestImpl;
            invokevirtual jdk.incubator.http.HttpRequestImpl.duration:()Ljava/time/Duration;
            invokevirtual java.time.Duration.getSeconds:()J
            ldc 1000
            lmul
        16: .line 243
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.request:Ljdk/incubator/http/HttpRequestImpl;
            invokevirtual jdk.incubator.http.HttpRequestImpl.duration:()Ljava/time/Duration;
            invokevirtual java.time.Duration.getNano:()I
            ldc 1000000
            idiv
            i2l
        17: .line 242
            ladd
        18: .line 239
      StackMap locals: jdk.incubator.http.Http1Exchange java.util.concurrent.Executor java.util.concurrent.CompletableFuture java.io.IOException
      StackMap stack: java.lang.String java.lang.Object[] java.lang.Object[] int long
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_2
        19: .line 244
            aload 3 /* cause */
            aastore
        20: .line 236
            invokestatic jdk.incubator.http.internal.common.Log.logTrace:(Ljava/lang/String;[Ljava/lang/Object;)V
        21: .line 245
            aload 2 /* cf */
            aload 3 /* cause */
            invokevirtual java.util.concurrent.CompletableFuture.completeExceptionally:(Ljava/lang/Throwable;)Z
            pop
        22: .line 247
      StackMap locals:
      StackMap stack:
            aload 2 /* cf */
            areturn
        end local 3 // java.io.IOException cause
        end local 2 // java.util.concurrent.CompletableFuture cf
        end local 1 // java.util.concurrent.Executor executor
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   23     0      this  Ljdk/incubator/http/Http1Exchange<TT;>;
            0   23     1  executor  Ljava/util/concurrent/Executor;
            3   23     2        cf  Ljava/util/concurrent/CompletableFuture<Ljdk/incubator/http/Response;>;
            6    9     3     cause  Ljava/io/IOException;
           11   23     3     cause  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           4     8       9  any
           9    10       9  any
    Signature: (Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture<Ljdk/incubator/http/Response;>;
    MethodParameters:
          Name  Flags
      executor  

  private jdk.incubator.http.Response lambda$1();
    descriptor: ()Ljdk/incubator/http/Response;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // jdk.incubator.http.Http1Exchange this
         0: .line 216
            aload 0 /* this */
            new jdk.incubator.http.Http1Response
            dup
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.connection:Ljdk/incubator/http/HttpConnection;
            aload 0 /* this */
            invokespecial jdk.incubator.http.Http1Response.<init>:(Ljdk/incubator/http/HttpConnection;Ljdk/incubator/http/Http1Exchange;)V
            putfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
         1: .line 217
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
            invokevirtual jdk.incubator.http.Http1Response.readHeaders:()V
         2: .line 218
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
            invokevirtual jdk.incubator.http.Http1Response.response:()Ljdk/incubator/http/Response;
            astore 1 /* r */
        start local 1 // jdk.incubator.http.Response r
         3: .line 219
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.incubator.http.Http1Exchange.response:Ljdk/incubator/http/Http1Response;
            invokevirtual jdk.incubator.http.Http1Response.getBuffer:()Ljava/nio/ByteBuffer;
            putfield jdk.incubator.http.Http1Exchange.buffer:Ljava/nio/ByteBuffer;
         4: .line 220
            aload 1 /* r */
            areturn
        end local 1 // jdk.incubator.http.Response r
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljdk/incubator/http/Http1Exchange<TT;>;
            3    5     1     r  Ljdk/incubator/http/Response;
    Exceptions:
      throws java.lang.Throwable

  private java.util.concurrent.CompletionStage lambda$2(java.util.concurrent.Executor, java.lang.Void);
    descriptor: (Ljava/util/concurrent/Executor;Ljava/lang/Void;)Ljava/util/concurrent/CompletionStage;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // jdk.incubator.http.Http1Exchange this
        start local 2 // java.lang.Void v
         0: .line 228
            aload 0 /* this */
            aload 1
            invokevirtual jdk.incubator.http.Http1Exchange.getResponseAsyncImpl:(Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
            areturn
        end local 2 // java.lang.Void v
        end local 0 // jdk.incubator.http.Http1Exchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/Http1Exchange<TT;>;
            0    1     2     v  Ljava/lang/Void;
}
Signature: <T:Ljava/lang/Object;>Ljdk/incubator/http/ExchangeImpl<TT;>;
SourceFile: "Http1Exchange.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract BodyHandler = jdk.incubator.http.HttpResponse$BodyHandler of jdk.incubator.http.HttpResponse
  public abstract BodyProcessor = jdk.incubator.http.HttpResponse$BodyProcessor of jdk.incubator.http.HttpResponse
  public abstract ExceptionalSupplier = jdk.incubator.http.internal.common.MinimalFuture$ExceptionalSupplier of jdk.incubator.http.internal.common.MinimalFuture