class jdk.incubator.http.AsyncSSLDelegate implements jdk.incubator.http.internal.common.ExceptionallyCloseable, jdk.incubator.http.AsyncConnection
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: jdk.incubator.http.AsyncSSLDelegate
  super_class: java.lang.Object
{
  final jdk.incubator.http.internal.common.AsyncWriteQueue appOutputQ;
    descriptor: Ljdk/incubator/http/internal/common/AsyncWriteQueue;
    flags: (0x0010) ACC_FINAL

  final jdk.incubator.http.internal.common.Queue<jdk.incubator.http.internal.common.ByteBufferReference> channelInputQ;
    descriptor: Ljdk/incubator/http/internal/common/Queue;
    flags: (0x0010) ACC_FINAL
    Signature: Ljdk/incubator/http/internal/common/Queue<Ljdk/incubator/http/internal/common/ByteBufferReference;>;

  final javax.net.ssl.SSLEngine engine;
    descriptor: Ljavax/net/ssl/SSLEngine;
    flags: (0x0010) ACC_FINAL

  final javax.net.ssl.SSLParameters sslParameters;
    descriptor: Ljavax/net/ssl/SSLParameters;
    flags: (0x0010) ACC_FINAL

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

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

  volatile java.util.function.Consumer<jdk.incubator.http.internal.common.ByteBufferReference> asyncReceiver;
    descriptor: Ljava/util/function/Consumer;
    flags: (0x0040) ACC_VOLATILE
    Signature: Ljava/util/function/Consumer<Ljdk/incubator/http/internal/common/ByteBufferReference;>;

  volatile java.util.function.Consumer<java.lang.Throwable> errorHandler;
    descriptor: Ljava/util/function/Consumer;
    flags: (0x0040) ACC_VOLATILE
    Signature: Ljava/util/function/Consumer<Ljava/lang/Throwable;>;

  volatile boolean connected;
    descriptor: Z
    flags: (0x0040) ACC_VOLATILE

  final java.lang.Object reader;
    descriptor: Ljava/lang/Object;
    flags: (0x0010) ACC_FINAL

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

  final java.lang.String[] alpn;
    descriptor: [Ljava/lang/String;
    flags: (0x0010) ACC_FINAL

  private final jdk.incubator.http.internal.common.ByteBufferPool netBufferPool;
    descriptor: Ljdk/incubator/http/internal/common/ByteBufferPool;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.incubator.http.internal.common.ByteBufferPool appBufferPool;
    descriptor: Ljdk/incubator/http/internal/common/ByteBufferPool;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static volatile int[] $SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

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

  private static volatile int[] $SWITCH_TABLE$javax$net$ssl$SSLEngineResult$Status;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

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

  void <init>(jdk.incubator.http.HttpConnection, jdk.incubator.http.HttpClientImpl, java.lang.String[]);
    descriptor: (Ljdk/incubator/http/HttpConnection;Ljdk/incubator/http/HttpClientImpl;[Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // jdk.incubator.http.HttpConnection lowerOutput
        start local 2 // jdk.incubator.http.HttpClientImpl client
        start local 3 // java.lang.String[] alpn
         0: .line 124
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 95
            aload 0 /* this */
            new jdk.incubator.http.internal.common.AsyncWriteQueue
            dup
            aload 0 /* this */
            invokedynamic accept(Ljdk/incubator/http/AsyncSSLDelegate;)Ljava/util/function/BiConsumer;
              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;)V
                  jdk/incubator/http/AsyncSSLDelegate.upperWrite([Ljdk/incubator/http/internal/common/ByteBufferReference;Ljdk/incubator/http/internal/common/AsyncWriteQueue;)V (7)
                  ([Ljdk/incubator/http/internal/common/ByteBufferReference;Ljdk/incubator/http/internal/common/AsyncWriteQueue;)V
            invokespecial jdk.incubator.http.internal.common.AsyncWriteQueue.<init>:(Ljava/util/function/BiConsumer;)V
            putfield jdk.incubator.http.AsyncSSLDelegate.appOutputQ:Ljdk/incubator/http/internal/common/AsyncWriteQueue;
         2: .line 114
            aload 0 /* this */
            iconst_0
            putfield jdk.incubator.http.AsyncSSLDelegate.connected:Z
         3: .line 117
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield jdk.incubator.http.AsyncSSLDelegate.reader:Ljava/lang/Object;
         4: .line 119
            aload 0 /* this */
            new java.util.concurrent.Semaphore
            dup
            iconst_1
            invokespecial java.util.concurrent.Semaphore.<init>:(I)V
            putfield jdk.incubator.http.AsyncSSLDelegate.handshaker:Ljava/util/concurrent/Semaphore;
         5: .line 429
            aload 0 /* this */
            new jdk.incubator.http.internal.common.ByteBufferPool
            dup
            invokespecial jdk.incubator.http.internal.common.ByteBufferPool.<init>:()V
            putfield jdk.incubator.http.AsyncSSLDelegate.netBufferPool:Ljdk/incubator/http/internal/common/ByteBufferPool;
         6: .line 430
            aload 0 /* this */
            new jdk.incubator.http.internal.common.ByteBufferPool
            dup
            invokespecial jdk.incubator.http.internal.common.ByteBufferPool.<init>:()V
            putfield jdk.incubator.http.AsyncSSLDelegate.appBufferPool:Ljdk/incubator/http/internal/common/ByteBufferPool;
         7: .line 126
            aload 2 /* client */
            invokevirtual jdk.incubator.http.HttpClientImpl.sslContext:()Ljavax/net/ssl/SSLContext;
            astore 4 /* context */
        start local 4 // javax.net.ssl.SSLContext context
         8: .line 127
            aload 0 /* this */
            aload 4 /* context */
            invokevirtual javax.net.ssl.SSLContext.createSSLEngine:()Ljavax/net/ssl/SSLEngine;
            putfield jdk.incubator.http.AsyncSSLDelegate.engine:Ljavax/net/ssl/SSLEngine;
         9: .line 128
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.engine:Ljavax/net/ssl/SSLEngine;
            iconst_1
            invokevirtual javax.net.ssl.SSLEngine.setUseClientMode:(Z)V
        10: .line 129
            aload 2 /* client */
            invokevirtual jdk.incubator.http.HttpClientImpl.sslParameters:()Ljava/util/Optional;
        11: .line 130
            aload 4 /* context */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic get(Ljavax/net/ssl/SSLContext;)Ljava/util/function/Supplier;
              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;
                  javax/net/ssl/SSLContext.getSupportedSSLParameters()Ljavax/net/ssl/SSLParameters; (5)
                  ()Ljavax/net/ssl/SSLParameters;
            invokevirtual java.util.Optional.orElseGet:(Ljava/util/function/Supplier;)Ljava/lang/Object;
            checkcast javax.net.ssl.SSLParameters
        12: .line 129
            astore 5 /* sslp */
        start local 5 // javax.net.ssl.SSLParameters sslp
        13: .line 131
            aload 0 /* this */
            aload 5 /* sslp */
            invokestatic jdk.incubator.http.internal.common.Utils.copySSLParameters:(Ljavax/net/ssl/SSLParameters;)Ljavax/net/ssl/SSLParameters;
            putfield jdk.incubator.http.AsyncSSLDelegate.sslParameters:Ljavax/net/ssl/SSLParameters;
        14: .line 132
            aload 3 /* alpn */
            ifnull 18
        15: .line 133
            new java.lang.StringBuilder
            dup
            ldc "AsyncSSLDelegate: Setting application protocols: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* alpn */
            invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokestatic jdk.incubator.http.internal.common.Log.logSSL:(Ljava/lang/String;[Ljava/lang/Object;)V
        16: .line 134
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.sslParameters:Ljavax/net/ssl/SSLParameters;
            aload 3 /* alpn */
            invokevirtual javax.net.ssl.SSLParameters.setApplicationProtocols:([Ljava/lang/String;)V
        17: .line 135
            goto 19
        18: .line 136
      StackMap locals: jdk.incubator.http.AsyncSSLDelegate jdk.incubator.http.HttpConnection jdk.incubator.http.HttpClientImpl java.lang.String[] javax.net.ssl.SSLContext javax.net.ssl.SSLParameters
      StackMap stack:
            ldc "AsyncSSLDelegate: no applications set!"
            iconst_0
            anewarray java.lang.Object
            invokestatic jdk.incubator.http.internal.common.Log.logSSL:(Ljava/lang/String;[Ljava/lang/Object;)V
        19: .line 138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.sslParameters:Ljavax/net/ssl/SSLParameters;
            invokestatic jdk.incubator.http.AsyncSSLDelegate.logParams:(Ljavax/net/ssl/SSLParameters;)V
        20: .line 139
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.engine:Ljavax/net/ssl/SSLEngine;
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.sslParameters:Ljavax/net/ssl/SSLParameters;
            invokevirtual javax.net.ssl.SSLEngine.setSSLParameters:(Ljavax/net/ssl/SSLParameters;)V
        21: .line 140
            aload 0 /* this */
            aload 1 /* lowerOutput */
            putfield jdk.incubator.http.AsyncSSLDelegate.lowerOutput:Ljdk/incubator/http/HttpConnection;
        22: .line 141
            aload 0 /* this */
            aload 2 /* client */
            putfield jdk.incubator.http.AsyncSSLDelegate.client:Ljdk/incubator/http/HttpClientImpl;
        23: .line 142
            aload 0 /* this */
            new jdk.incubator.http.internal.common.Queue
            dup
            invokespecial jdk.incubator.http.internal.common.Queue.<init>:()V
            putfield jdk.incubator.http.AsyncSSLDelegate.channelInputQ:Ljdk/incubator/http/internal/common/Queue;
        24: .line 143
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.channelInputQ:Ljdk/incubator/http/internal/common/Queue;
            aload 0 /* this */
            invokedynamic run(Ljdk/incubator/http/AsyncSSLDelegate;)Ljava/lang/Runnable;
              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:
                  ()V
                  jdk/incubator/http/AsyncSSLDelegate.upperRead()V (5)
                  ()V
            invokevirtual jdk.incubator.http.internal.common.Queue.registerPutCallback:(Ljava/lang/Runnable;)V
        25: .line 144
            aload 0 /* this */
            aload 3 /* alpn */
            putfield jdk.incubator.http.AsyncSSLDelegate.alpn:[Ljava/lang/String;
        26: .line 145
            return
        end local 5 // javax.net.ssl.SSLParameters sslp
        end local 4 // javax.net.ssl.SSLContext context
        end local 3 // java.lang.String[] alpn
        end local 2 // jdk.incubator.http.HttpClientImpl client
        end local 1 // jdk.incubator.http.HttpConnection lowerOutput
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   27     0         this  Ljdk/incubator/http/AsyncSSLDelegate;
            0   27     1  lowerOutput  Ljdk/incubator/http/HttpConnection;
            0   27     2       client  Ljdk/incubator/http/HttpClientImpl;
            0   27     3         alpn  [Ljava/lang/String;
            8   27     4      context  Ljavax/net/ssl/SSLContext;
           13   27     5         sslp  Ljavax/net/ssl/SSLParameters;
    MethodParameters:
             Name  Flags
      lowerOutput  
      client       
      alpn         

  public void writeAsync(jdk.incubator.http.internal.common.ByteBufferReference[]);
    descriptor: ([Ljdk/incubator/http/internal/common/ByteBufferReference;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] src
         0: .line 149
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.appOutputQ:Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            aload 1 /* src */
            invokevirtual jdk.incubator.http.internal.common.AsyncWriteQueue.put:([Ljdk/incubator/http/internal/common/ByteBufferReference;)V
         1: .line 150
            return
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] src
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/incubator/http/AsyncSSLDelegate;
            0    2     1   src  [Ljdk/incubator/http/internal/common/ByteBufferReference;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      src   

  public void writeAsyncUnordered(jdk.incubator.http.internal.common.ByteBufferReference[]);
    descriptor: ([Ljdk/incubator/http/internal/common/ByteBufferReference;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] buffers
         0: .line 154
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.appOutputQ:Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            aload 1 /* buffers */
            invokevirtual jdk.incubator.http.internal.common.AsyncWriteQueue.putFirst:([Ljdk/incubator/http/internal/common/ByteBufferReference;)V
         1: .line 155
            return
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] buffers
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Ljdk/incubator/http/AsyncSSLDelegate;
            0    2     1  buffers  [Ljdk/incubator/http/internal/common/ByteBufferReference;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      buffers  

  public void flushAsync();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 159
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.appOutputQ:Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            invokevirtual jdk.incubator.http.internal.common.AsyncWriteQueue.flush:()Z
            ifeq 2
         1: .line 160
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.lowerOutput:Ljdk/incubator/http/HttpConnection;
            invokevirtual jdk.incubator.http.HttpConnection.flushAsync:()V
         2: .line 162
      StackMap locals:
      StackMap stack:
            return
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/incubator/http/AsyncSSLDelegate;
    Exceptions:
      throws java.io.IOException

  javax.net.ssl.SSLEngine getEngine();
    descriptor: ()Ljavax/net/ssl/SSLEngine;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 165
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.engine:Ljavax/net/ssl/SSLEngine;
            areturn
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/AsyncSSLDelegate;

  public void closeExceptionally(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // java.lang.Throwable t
         0: .line 170
            aload 1 /* t */
            iconst_3
            anewarray java.io.Closeable
            dup
            iconst_0
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.appOutputQ:Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.channelInputQ:Ljdk/incubator/http/internal/common/Queue;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.lowerOutput:Ljdk/incubator/http/HttpConnection;
            aastore
            invokestatic jdk.incubator.http.internal.common.Utils.close:(Ljava/lang/Throwable;[Ljava/io/Closeable;)V
         1: .line 171
            return
        end local 1 // java.lang.Throwable t
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/incubator/http/AsyncSSLDelegate;
            0    2     1     t  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      t     

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 176
            iconst_3
            anewarray java.io.Closeable
            dup
            iconst_0
         1: .line 175
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.appOutputQ:Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.channelInputQ:Ljdk/incubator/http/internal/common/Queue;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.lowerOutput:Ljdk/incubator/http/HttpConnection;
            aastore
            invokestatic jdk.incubator.http.internal.common.Utils.close:([Ljava/io/Closeable;)V
            return
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/incubator/http/AsyncSSLDelegate;

  private void upperWrite(jdk.incubator.http.internal.common.ByteBufferReference[], jdk.incubator.http.internal.common.AsyncWriteQueue);
    descriptor: ([Ljdk/incubator/http/internal/common/ByteBufferReference;Ljdk/incubator/http/internal/common/AsyncWriteQueue;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] refs
        start local 2 // jdk.incubator.http.internal.common.AsyncWriteQueue delayCallback
         0: .line 196
            aload 1 /* refs */
            invokestatic jdk.incubator.http.internal.common.ByteBufferReference.toBuffers:([Ljdk/incubator/http/internal/common/ByteBufferReference;)[Ljava/nio/ByteBuffer;
            astore 3 /* buffers */
        start local 3 // java.nio.ByteBuffer[] buffers
         1: .line 197
            aload 3 /* buffers */
            invokestatic jdk.incubator.http.internal.common.Utils.remaining:([Ljava/nio/ByteBuffer;)I
            istore 4 /* bytes */
        start local 4 // int bytes
         2: .line 198
            goto 12
         3: .line 199
      StackMap locals: java.nio.ByteBuffer[] int
      StackMap stack:
            aload 0 /* this */
            aload 3 /* buffers */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.wrapBuffers:([Ljava/nio/ByteBuffer;)Ljdk/incubator/http/AsyncSSLDelegate$EngineResult;
            astore 5 /* r */
        start local 5 // jdk.incubator.http.AsyncSSLDelegate$EngineResult r
         4: .line 200
            aload 5 /* r */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate$EngineResult.bytesProduced:()I
            istore 6 /* bytesProduced */
        start local 6 // int bytesProduced
         5: .line 201
            aload 5 /* r */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate$EngineResult.bytesConsumed:()I
            istore 7 /* bytesConsumed */
        start local 7 // int bytesConsumed
         6: .line 202
            iload 4 /* bytes */
            iload 7 /* bytesConsumed */
            isub
            istore 4 /* bytes */
         7: .line 203
            iload 6 /* bytesProduced */
            ifle 9
         8: .line 204
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.lowerOutput:Ljdk/incubator/http/HttpConnection;
            iconst_1
            anewarray jdk.incubator.http.internal.common.ByteBufferReference
            dup
            iconst_0
            aload 5 /* r */
            getfield jdk.incubator.http.AsyncSSLDelegate$EngineResult.destBuffer:Ljdk/incubator/http/internal/common/ByteBufferReference;
            aastore
            invokevirtual jdk.incubator.http.HttpConnection.writeAsync:([Ljdk/incubator/http/internal/common/ByteBufferReference;)V
         9: .line 217
      StackMap locals: jdk.incubator.http.AsyncSSLDelegate$EngineResult int int
      StackMap stack:
            aload 5 /* r */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate$EngineResult.handshaking:()Z
            ifeq 12
        10: .line 218
            ldc "Write: needs handshake"
            iconst_0
            anewarray java.lang.Object
            invokestatic jdk.incubator.http.internal.common.Log.logTrace:(Ljava/lang/String;[Ljava/lang/Object;)V
        11: .line 219
            aload 0 /* this */
            ldc "Write"
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.doHandshakeNow:(Ljava/lang/String;)V
        end local 7 // int bytesConsumed
        end local 6 // int bytesProduced
        end local 5 // jdk.incubator.http.AsyncSSLDelegate$EngineResult r
        12: .line 198
      StackMap locals:
      StackMap stack:
            iload 4 /* bytes */
            ifgt 3
        13: .line 222
            aload 1 /* refs */
            invokestatic jdk.incubator.http.internal.common.ByteBufferReference.clear:([Ljdk/incubator/http/internal/common/ByteBufferReference;)V
        end local 4 // int bytes
        end local 3 // java.nio.ByteBuffer[] buffers
        14: .line 223
            goto 18
      StackMap locals: jdk.incubator.http.AsyncSSLDelegate jdk.incubator.http.internal.common.ByteBufferReference[] jdk.incubator.http.internal.common.AsyncWriteQueue
      StackMap stack: java.lang.Throwable
        15: astore 3 /* t */
        start local 3 // java.lang.Throwable t
        16: .line 224
            aload 0 /* this */
            aload 3 /* t */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.closeExceptionally:(Ljava/lang/Throwable;)V
        17: .line 225
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.errorHandler:Ljava/util/function/Consumer;
            aload 3 /* t */
            invokeinterface java.util.function.Consumer.accept:(Ljava/lang/Object;)V
        end local 3 // java.lang.Throwable t
        18: .line 227
      StackMap locals:
      StackMap stack:
            return
        end local 2 // jdk.incubator.http.internal.common.AsyncWriteQueue delayCallback
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference[] refs
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   19     0           this  Ljdk/incubator/http/AsyncSSLDelegate;
            0   19     1           refs  [Ljdk/incubator/http/internal/common/ByteBufferReference;
            0   19     2  delayCallback  Ljdk/incubator/http/internal/common/AsyncWriteQueue;
            1   14     3        buffers  [Ljava/nio/ByteBuffer;
            2   14     4          bytes  I
            4   12     5              r  Ljdk/incubator/http/AsyncSSLDelegate$EngineResult;
            5   12     6  bytesProduced  I
            6   12     7  bytesConsumed  I
           16   18     3              t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0    14      15  Class java.lang.Throwable
    MethodParameters:
               Name  Flags
      refs           
      delayCallback  

  void connect();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 233
            aload 0 /* this */
            ldc "Init"
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.doHandshakeNow:(Ljava/lang/String;)V
         1: .line 234
            aload 0 /* this */
            iconst_1
            putfield jdk.incubator.http.AsyncSSLDelegate.connected:Z
         2: .line 235
            return
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/incubator/http/AsyncSSLDelegate;
    Exceptions:
      throws java.io.IOException, java.lang.InterruptedException

  boolean connected();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 238
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.connected:Z
            ireturn
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/AsyncSSLDelegate;

  private void startHandshake(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // java.lang.String tag
         0: .line 242
            aload 0 /* this */
            aload 1 /* tag */
            invokedynamic run(Ljdk/incubator/http/AsyncSSLDelegate;Ljava/lang/String;)Ljava/lang/Runnable;
              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:
                  ()V
                  jdk/incubator/http/AsyncSSLDelegate.lambda$3(Ljava/lang/String;)V (7)
                  ()V
            astore 2 /* run */
        start local 2 // java.lang.Runnable run
         1: .line 251
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.client:Ljdk/incubator/http/HttpClientImpl;
            invokevirtual jdk.incubator.http.HttpClientImpl.executor:()Ljava/util/concurrent/Executor;
            aload 2 /* run */
            invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
         2: .line 252
            return
        end local 2 // java.lang.Runnable run
        end local 1 // java.lang.String tag
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/incubator/http/AsyncSSLDelegate;
            0    3     1   tag  Ljava/lang/String;
            1    3     2   run  Ljava/lang/Runnable;
    MethodParameters:
      Name  Flags
      tag   

  private void doHandshakeNow(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // java.lang.String tag
         0: .line 257
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.handshaker:Ljava/util/concurrent/Semaphore;
            invokevirtual java.util.concurrent.Semaphore.acquire:()V
         1: .line 259
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.channelInputQ:Ljdk/incubator/http/internal/common/Queue;
            invokevirtual jdk.incubator.http.internal.common.Queue.disableCallback:()V
         2: .line 260
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.lowerOutput:Ljdk/incubator/http/HttpConnection;
            invokevirtual jdk.incubator.http.HttpConnection.flushAsync:()V
         3: .line 261
            ldc "{0}: Starting handshake..."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* tag */
            aastore
            invokestatic jdk.incubator.http.internal.common.Log.logTrace:(Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 262
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.doHandshakeImpl:()V
         5: .line 263
            ldc "{0}: Handshake completed"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* tag */
            aastore
            invokestatic jdk.incubator.http.internal.common.Log.logTrace:(Ljava/lang/String;[Ljava/lang/Object;)V
         6: .line 266
            goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: astore 2
         8: .line 267
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.handshaker:Ljava/util/concurrent/Semaphore;
            invokevirtual java.util.concurrent.Semaphore.release:()V
         9: .line 268
            aload 2
            athrow
        10: .line 267
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.handshaker:Ljava/util/concurrent/Semaphore;
            invokevirtual java.util.concurrent.Semaphore.release:()V
        11: .line 269
            return
        end local 1 // java.lang.String tag
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Ljdk/incubator/http/AsyncSSLDelegate;
            0   12     1   tag  Ljava/lang/String;
      Exception table:
        from    to  target  type
           1     7       7  any
    Exceptions:
      throws java.io.IOException, java.lang.InterruptedException
    MethodParameters:
      Name  Flags
      tag   

  public void enableCallback();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 272
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.channelInputQ:Ljdk/incubator/http/internal/common/Queue;
            invokevirtual jdk.incubator.http.internal.common.Queue.enableCallback:()V
         1: .line 273
            return
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/incubator/http/AsyncSSLDelegate;

  private void doHandshakeImpl();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 280
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.engine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.beginHandshake:()V
         1: .line 282
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.engine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            astore 1 /* status */
        start local 1 // javax.net.ssl.SSLEngineResult$HandshakeStatus status
         2: .line 283
            invokestatic jdk.incubator.http.AsyncSSLDelegate.$SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus:()[I
            aload 1 /* status */
            invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
            iaload
            tableswitch { // 1 - 6
                    1: 14
                    2: 13
                    3: 3
                    4: 9
                    5: 11
                    6: 11
              default: 15
          }
         3: .line 285
      StackMap locals: javax.net.ssl.SSLEngineResult$HandshakeStatus
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.obtainTasks:()Ljava/util/List;
            astore 2 /* tasks */
        start local 2 // java.util.List tasks
         4: .line 286
            aload 2 /* tasks */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 7
      StackMap locals: jdk.incubator.http.AsyncSSLDelegate javax.net.ssl.SSLEngineResult$HandshakeStatus java.util.List top java.util.Iterator
      StackMap stack:
         5: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Runnable
            astore 3 /* task */
        start local 3 // java.lang.Runnable task
         6: .line 287
            aload 3 /* task */
            invokeinterface java.lang.Runnable.run:()V
        end local 3 // java.lang.Runnable task
         7: .line 286
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        end local 2 // java.util.List tasks
         8: .line 289
            goto 1
         9: .line 291
      StackMap locals: jdk.incubator.http.AsyncSSLDelegate javax.net.ssl.SSLEngineResult$HandshakeStatus
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.handshakeWrapAndSend:()Ljdk/incubator/http/AsyncSSLDelegate$EngineResult;
            pop
        10: .line 292
            goto 1
        11: .line 294
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.handshakeReceiveAndUnWrap:()V
        12: .line 295
            goto 1
        13: .line 297
      StackMap locals:
      StackMap stack:
            return
        14: .line 299
      StackMap locals:
      StackMap stack:
            return
        15: .line 301
      StackMap locals:
      StackMap stack:
            new java.lang.InternalError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unexpected Handshake Status: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        16: .line 302
            aload 1 /* status */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        17: .line 301
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // javax.net.ssl.SSLEngineResult$HandshakeStatus status
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   18     0    this  Ljdk/incubator/http/AsyncSSLDelegate;
            2   18     1  status  Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            4    8     2   tasks  Ljava/util/List<Ljava/lang/Runnable;>;
            6    7     3    task  Ljava/lang/Runnable;
    Exceptions:
      throws java.io.IOException

  void doClosure();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 311
            return
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/AsyncSSLDelegate;
    Exceptions:
      throws java.io.IOException

  java.util.List<java.lang.Runnable> obtainTasks();
    descriptor: ()Ljava/util/List;
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 314
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* l */
        start local 1 // java.util.List l
         1: .line 316
            goto 3
        start local 2 // java.lang.Runnable r
         2: .line 317
      StackMap locals: java.util.List java.lang.Runnable
      StackMap stack:
            aload 1 /* l */
            aload 2 /* r */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // java.lang.Runnable r
         3: .line 316
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.engine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getDelegatedTask:()Ljava/lang/Runnable;
            dup
            astore 2 /* r */
        start local 2 // java.lang.Runnable r
         4: ifnonnull 2
         5: .line 319
            aload 1 /* l */
            areturn
        end local 2 // java.lang.Runnable r
        end local 1 // java.util.List l
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljdk/incubator/http/AsyncSSLDelegate;
            1    6     1     l  Ljava/util/List<Ljava/lang/Runnable;>;
            2    3     2     r  Ljava/lang/Runnable;
            4    6     2     r  Ljava/lang/Runnable;
    Signature: ()Ljava/util/List<Ljava/lang/Runnable;>;

  public void setAsyncCallbacks(java.util.function.Consumer<jdk.incubator.http.internal.common.ByteBufferReference>, java.util.function.Consumer<java.lang.Throwable>, java.util.function.Supplier<jdk.incubator.http.internal.common.ByteBufferReference>);
    descriptor: (Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/Supplier;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // java.util.function.Consumer asyncReceiver
        start local 2 // java.util.function.Consumer errorReceiver
        start local 3 // java.util.function.Supplier readBufferSupplier
         0: .line 326
            aload 0 /* this */
            aload 1 /* asyncReceiver */
            putfield jdk.incubator.http.AsyncSSLDelegate.asyncReceiver:Ljava/util/function/Consumer;
         1: .line 327
            aload 0 /* this */
            aload 2 /* errorReceiver */
            putfield jdk.incubator.http.AsyncSSLDelegate.errorHandler:Ljava/util/function/Consumer;
         2: .line 330
            return
        end local 3 // java.util.function.Supplier readBufferSupplier
        end local 2 // java.util.function.Consumer errorReceiver
        end local 1 // java.util.function.Consumer asyncReceiver
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    3     0                this  Ljdk/incubator/http/AsyncSSLDelegate;
            0    3     1       asyncReceiver  Ljava/util/function/Consumer<Ljdk/incubator/http/internal/common/ByteBufferReference;>;
            0    3     2       errorReceiver  Ljava/util/function/Consumer<Ljava/lang/Throwable;>;
            0    3     3  readBufferSupplier  Ljava/util/function/Supplier<Ljdk/incubator/http/internal/common/ByteBufferReference;>;
    Signature: (Ljava/util/function/Consumer<Ljdk/incubator/http/internal/common/ByteBufferReference;>;Ljava/util/function/Consumer<Ljava/lang/Throwable;>;Ljava/util/function/Supplier<Ljdk/incubator/http/internal/common/ByteBufferReference;>;)V
    MethodParameters:
                    Name  Flags
      asyncReceiver       
      errorReceiver       
      readBufferSupplier  

  public void startReading();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 335
            return
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/AsyncSSLDelegate;

  public void stopAsyncReading();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 340
            return
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/AsyncSSLDelegate;

  jdk.incubator.http.AsyncSSLDelegate$EngineResult handshakeWrapAndSend();
    descriptor: ()Ljdk/incubator/http/AsyncSSLDelegate$EngineResult;
    flags: (0x0000) 
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 381
            aload 0 /* this */
            getstatic jdk.incubator.http.internal.common.Utils.EMPTY_BYTEBUFFER:Ljava/nio/ByteBuffer;
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.wrapBuffer:(Ljava/nio/ByteBuffer;)Ljdk/incubator/http/AsyncSSLDelegate$EngineResult;
            astore 1 /* r */
        start local 1 // jdk.incubator.http.AsyncSSLDelegate$EngineResult r
         1: .line 382
            aload 1 /* r */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate$EngineResult.bytesProduced:()I
            ifle 4
         2: .line 383
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.lowerOutput:Ljdk/incubator/http/HttpConnection;
            iconst_1
            anewarray jdk.incubator.http.internal.common.ByteBufferReference
            dup
            iconst_0
            aload 1 /* r */
            getfield jdk.incubator.http.AsyncSSLDelegate$EngineResult.destBuffer:Ljdk/incubator/http/internal/common/ByteBufferReference;
            aastore
            invokevirtual jdk.incubator.http.HttpConnection.writeAsync:([Ljdk/incubator/http/internal/common/ByteBufferReference;)V
         3: .line 384
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.lowerOutput:Ljdk/incubator/http/HttpConnection;
            invokevirtual jdk.incubator.http.HttpConnection.flushAsync:()V
         4: .line 386
      StackMap locals: jdk.incubator.http.AsyncSSLDelegate$EngineResult
      StackMap stack:
            aload 1 /* r */
            areturn
        end local 1 // jdk.incubator.http.AsyncSSLDelegate$EngineResult r
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljdk/incubator/http/AsyncSSLDelegate;
            1    5     1     r  Ljdk/incubator/http/AsyncSSLDelegate$EngineResult;
    Exceptions:
      throws java.io.IOException

  void handshakeReceiveAndUnWrap();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 392
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.channelInputQ:Ljdk/incubator/http/internal/common/Queue;
            invokevirtual jdk.incubator.http.internal.common.Queue.take:()Ljava/lang/Object;
            checkcast jdk.incubator.http.internal.common.ByteBufferReference
            astore 1 /* ref */
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference ref
         1: .line 395
      StackMap locals: jdk.incubator.http.internal.common.ByteBufferReference
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ref */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.get:()Ljava/nio/ByteBuffer;
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.unwrapBuffer:(Ljava/nio/ByteBuffer;)Ljdk/incubator/http/AsyncSSLDelegate$EngineResult;
            astore 2 /* r */
        start local 2 // jdk.incubator.http.AsyncSSLDelegate$EngineResult r
         2: .line 396
            aload 2 /* r */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate$EngineResult.status:()Ljavax/net/ssl/SSLEngineResult$Status;
            astore 3 /* status */
        start local 3 // javax.net.ssl.SSLEngineResult$Status status
         3: .line 397
            aload 3 /* status */
            getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_UNDERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
            if_acmpne 7
         4: .line 399
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.channelInputQ:Ljdk/incubator/http/internal/common/Queue;
            invokevirtual jdk.incubator.http.internal.common.Queue.take:()Ljava/lang/Object;
            checkcast jdk.incubator.http.internal.common.ByteBufferReference
            astore 4 /* ref1 */
        start local 4 // jdk.incubator.http.internal.common.ByteBufferReference ref1
         5: .line 400
            aload 0 /* this */
            aload 1 /* ref */
            aload 4 /* ref1 */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.combine:(Ljdk/incubator/http/internal/common/ByteBufferReference;Ljdk/incubator/http/internal/common/ByteBufferReference;)Ljdk/incubator/http/internal/common/ByteBufferReference;
            astore 1 /* ref */
         6: .line 401
            goto 1
        end local 4 // jdk.incubator.http.internal.common.ByteBufferReference ref1
         7: .line 405
      StackMap locals: jdk.incubator.http.AsyncSSLDelegate$EngineResult javax.net.ssl.SSLEngineResult$Status
      StackMap stack:
            aload 2 /* r */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate$EngineResult.bytesProduced:()I
            ifle 10
         8: .line 406
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.asyncReceiver:Ljava/util/function/Consumer;
            aload 2 /* r */
            getfield jdk.incubator.http.AsyncSSLDelegate$EngineResult.destBuffer:Ljdk/incubator/http/internal/common/ByteBufferReference;
            invokeinterface java.util.function.Consumer.accept:(Ljava/lang/Object;)V
         9: .line 407
            goto 11
        10: .line 408
      StackMap locals:
      StackMap stack:
            aload 2 /* r */
            getfield jdk.incubator.http.AsyncSSLDelegate$EngineResult.destBuffer:Ljdk/incubator/http/internal/common/ByteBufferReference;
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.clear:()V
        11: .line 412
      StackMap locals:
      StackMap stack:
            aload 2 /* r */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate$EngineResult.handshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            if_acmpne 13
        12: .line 413
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.obtainTasks:()Ljava/util/List;
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            invokedynamic accept()Ljava/util/function/Consumer;
              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;)V
                  jdk/incubator/http/AsyncSSLDelegate.lambda$4(Ljava/lang/Runnable;)V (6)
                  (Ljava/lang/Runnable;)V
            invokeinterface java.util.stream.Stream.forEach:(Ljava/util/function/Consumer;)V
        13: .line 416
      StackMap locals:
      StackMap stack:
            aload 1 /* ref */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.get:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 1
        14: .line 417
            aload 1 /* ref */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.clear:()V
        15: .line 418
            return
        end local 3 // javax.net.ssl.SSLEngineResult$Status status
        end local 2 // jdk.incubator.http.AsyncSSLDelegate$EngineResult r
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference ref
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   16     0    this  Ljdk/incubator/http/AsyncSSLDelegate;
            1   16     1     ref  Ljdk/incubator/http/internal/common/ByteBufferReference;
            2   16     2       r  Ljdk/incubator/http/AsyncSSLDelegate$EngineResult;
            3   16     3  status  Ljavax/net/ssl/SSLEngineResult$Status;
            5    7     4    ref1  Ljdk/incubator/http/internal/common/ByteBufferReference;
    Exceptions:
      throws java.io.IOException

  jdk.incubator.http.AsyncSSLDelegate$EngineResult wrapBuffer(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)Ljdk/incubator/http/AsyncSSLDelegate$EngineResult;
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // java.nio.ByteBuffer src
         0: .line 424
            iconst_1
            anewarray java.nio.ByteBuffer
            astore 2 /* bufs */
        start local 2 // java.nio.ByteBuffer[] bufs
         1: .line 425
            aload 2 /* bufs */
            iconst_0
            aload 1 /* src */
            aastore
         2: .line 426
            aload 0 /* this */
            aload 2 /* bufs */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.wrapBuffers:([Ljava/nio/ByteBuffer;)Ljdk/incubator/http/AsyncSSLDelegate$EngineResult;
            areturn
        end local 2 // java.nio.ByteBuffer[] bufs
        end local 1 // java.nio.ByteBuffer src
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/incubator/http/AsyncSSLDelegate;
            0    3     1   src  Ljava/nio/ByteBuffer;
            1    3     2  bufs  [Ljava/nio/ByteBuffer;
    Exceptions:
      throws javax.net.ssl.SSLException
    MethodParameters:
      Name  Flags
      src   

  public jdk.incubator.http.internal.common.ByteBufferReference getNetBuffer();
    descriptor: ()Ljdk/incubator/http/internal/common/ByteBufferReference;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 438
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.netBufferPool:Ljdk/incubator/http/internal/common/ByteBufferPool;
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.engine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getPacketBufferSize:()I
            invokevirtual jdk.incubator.http.internal.common.ByteBufferPool.get:(I)Ljdk/incubator/http/internal/common/ByteBufferReference;
            areturn
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/AsyncSSLDelegate;

  private jdk.incubator.http.internal.common.ByteBufferReference getAppBuffer();
    descriptor: ()Ljdk/incubator/http/internal/common/ByteBufferReference;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 446
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.appBufferPool:Ljdk/incubator/http/internal/common/ByteBufferPool;
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.engine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
            invokevirtual jdk.incubator.http.internal.common.ByteBufferPool.get:(I)Ljdk/incubator/http/internal/common/ByteBufferReference;
            areturn
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/AsyncSSLDelegate;

  jdk.incubator.http.AsyncSSLDelegate$EngineResult wrapBuffers(java.nio.ByteBuffer[]);
    descriptor: ([Ljava/nio/ByteBuffer;)Ljdk/incubator/http/AsyncSSLDelegate$EngineResult;
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // java.nio.ByteBuffer[] src
         0: .line 450
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.getNetBuffer:()Ljdk/incubator/http/internal/common/ByteBufferReference;
            astore 2 /* dst */
        start local 2 // jdk.incubator.http.internal.common.ByteBufferReference dst
         1: .line 452
      StackMap locals: jdk.incubator.http.internal.common.ByteBufferReference
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.engine:Ljavax/net/ssl/SSLEngine;
            aload 1 /* src */
            aload 2 /* dst */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.get:()Ljava/nio/ByteBuffer;
            invokevirtual javax.net.ssl.SSLEngine.wrap:([Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
            astore 3 /* sslResult */
        start local 3 // javax.net.ssl.SSLEngineResult sslResult
         2: .line 453
            invokestatic jdk.incubator.http.AsyncSSLDelegate.$SWITCH_TABLE$javax$net$ssl$SSLEngineResult$Status:()[I
            aload 3 /* sslResult */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            invokevirtual javax.net.ssl.SSLEngineResult$Status.ordinal:()I
            iaload
            tableswitch { // 1 - 4
                    1: 7
                    2: 3
                    3: 5
                    4: 5
              default: 8
          }
         3: .line 457
      StackMap locals: javax.net.ssl.SSLEngineResult
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.getNetBuffer:()Ljdk/incubator/http/internal/common/ByteBufferReference;
            astore 2 /* dst */
         4: .line 458
            goto 1
         5: .line 461
      StackMap locals:
      StackMap stack:
            aload 2 /* dst */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.get:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
         6: .line 462
            new jdk.incubator.http.AsyncSSLDelegate$EngineResult
            dup
            aload 3 /* sslResult */
            aload 2 /* dst */
            invokespecial jdk.incubator.http.AsyncSSLDelegate$EngineResult.<init>:(Ljavax/net/ssl/SSLEngineResult;Ljdk/incubator/http/internal/common/ByteBufferReference;)V
            areturn
         7: .line 466
      StackMap locals:
      StackMap stack:
            new jdk.incubator.http.AsyncSSLDelegate$EngineResult
            dup
            aload 3 /* sslResult */
            invokespecial jdk.incubator.http.AsyncSSLDelegate$EngineResult.<init>:(Ljavax/net/ssl/SSLEngineResult;)V
            areturn
         8: .line 468
      StackMap locals:
      StackMap stack:
            getstatic jdk.incubator.http.AsyncSSLDelegate.$assertionsDisabled:Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 3 // javax.net.ssl.SSLEngineResult sslResult
        end local 2 // jdk.incubator.http.internal.common.ByteBufferReference dst
        end local 1 // java.nio.ByteBuffer[] src
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Ljdk/incubator/http/AsyncSSLDelegate;
            0    9     1        src  [Ljava/nio/ByteBuffer;
            1    9     2        dst  Ljdk/incubator/http/internal/common/ByteBufferReference;
            2    9     3  sslResult  Ljavax/net/ssl/SSLEngineResult;
    Exceptions:
      throws javax.net.ssl.SSLException
    MethodParameters:
      Name  Flags
      src   

  jdk.incubator.http.AsyncSSLDelegate$EngineResult unwrapBuffer(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)Ljdk/incubator/http/AsyncSSLDelegate$EngineResult;
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // java.nio.ByteBuffer srcbuf
         0: .line 474
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.getAppBuffer:()Ljdk/incubator/http/internal/common/ByteBufferReference;
            astore 2 /* dst */
        start local 2 // jdk.incubator.http.internal.common.ByteBufferReference dst
         1: .line 476
      StackMap locals: jdk.incubator.http.internal.common.ByteBufferReference
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.engine:Ljavax/net/ssl/SSLEngine;
            aload 1 /* srcbuf */
            aload 2 /* dst */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.get:()Ljava/nio/ByteBuffer;
            invokevirtual javax.net.ssl.SSLEngine.unwrap:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
            astore 3 /* sslResult */
        start local 3 // javax.net.ssl.SSLEngineResult sslResult
         2: .line 477
            invokestatic jdk.incubator.http.AsyncSSLDelegate.$SWITCH_TABLE$javax$net$ssl$SSLEngineResult$Status:()[I
            aload 3 /* sslResult */
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            invokevirtual javax.net.ssl.SSLEngineResult$Status.ordinal:()I
            iaload
            tableswitch { // 1 - 4
                    1: 7
                    2: 3
                    3: 9
                    4: 5
              default: 11
          }
         3: .line 481
      StackMap locals: javax.net.ssl.SSLEngineResult
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.getAppBuffer:()Ljdk/incubator/http/internal/common/ByteBufferReference;
            astore 2 /* dst */
         4: .line 482
            goto 1
         5: .line 484
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.doClosure:()V
         6: .line 485
            new java.io.IOException
            dup
            ldc "Engine closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 487
      StackMap locals:
      StackMap stack:
            aload 2 /* dst */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.clear:()V
         8: .line 488
            new jdk.incubator.http.AsyncSSLDelegate$EngineResult
            dup
            aload 3 /* sslResult */
            invokespecial jdk.incubator.http.AsyncSSLDelegate$EngineResult.<init>:(Ljavax/net/ssl/SSLEngineResult;)V
            areturn
         9: .line 490
      StackMap locals:
      StackMap stack:
            aload 2 /* dst */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.get:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
        10: .line 491
            new jdk.incubator.http.AsyncSSLDelegate$EngineResult
            dup
            aload 3 /* sslResult */
            aload 2 /* dst */
            invokespecial jdk.incubator.http.AsyncSSLDelegate$EngineResult.<init>:(Ljavax/net/ssl/SSLEngineResult;Ljdk/incubator/http/internal/common/ByteBufferReference;)V
            areturn
        end local 3 // javax.net.ssl.SSLEngineResult sslResult
        11: .line 475
      StackMap locals:
      StackMap stack:
            goto 1
        end local 2 // jdk.incubator.http.internal.common.ByteBufferReference dst
        end local 1 // java.nio.ByteBuffer srcbuf
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Ljdk/incubator/http/AsyncSSLDelegate;
            0   12     1     srcbuf  Ljava/nio/ByteBuffer;
            1   12     2        dst  Ljdk/incubator/http/internal/common/ByteBufferReference;
            2   11     3  sslResult  Ljavax/net/ssl/SSLEngineResult;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      srcbuf  

  public void asyncReceive(jdk.incubator.http.internal.common.ByteBufferReference);
    descriptor: (Ljdk/incubator/http/internal/common/ByteBufferReference;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference buffer
         0: .line 503
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.channelInputQ:Ljdk/incubator/http/internal/common/Queue;
            aload 1 /* buffer */
            invokevirtual jdk.incubator.http.internal.common.Queue.put:(Ljava/lang/Object;)V
         1: .line 504
            goto 5
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: astore 2 /* t */
        start local 2 // java.lang.Throwable t
         3: .line 505
            aload 0 /* this */
            aload 2 /* t */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.closeExceptionally:(Ljava/lang/Throwable;)V
         4: .line 506
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.errorHandler:Ljava/util/function/Consumer;
            aload 2 /* t */
            invokeinterface java.util.function.Consumer.accept:(Ljava/lang/Object;)V
        end local 2 // java.lang.Throwable t
         5: .line 508
      StackMap locals:
      StackMap stack:
            return
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference buffer
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Ljdk/incubator/http/AsyncSSLDelegate;
            0    6     1  buffer  Ljdk/incubator/http/internal/common/ByteBufferReference;
            3    5     2       t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Throwable
    MethodParameters:
        Name  Flags
      buffer  

  private jdk.incubator.http.internal.common.ByteBufferReference pollInput();
    descriptor: ()Ljdk/incubator/http/internal/common/ByteBufferReference;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 511
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.channelInputQ:Ljdk/incubator/http/internal/common/Queue;
            invokevirtual jdk.incubator.http.internal.common.Queue.poll:()Ljava/lang/Object;
            checkcast jdk.incubator.http.internal.common.ByteBufferReference
            areturn
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/AsyncSSLDelegate;
    Exceptions:
      throws java.io.IOException

  private jdk.incubator.http.internal.common.ByteBufferReference pollInput(jdk.incubator.http.internal.common.ByteBufferReference);
    descriptor: (Ljdk/incubator/http/internal/common/ByteBufferReference;)Ljdk/incubator/http/internal/common/ByteBufferReference;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference next
         0: .line 515
            aload 1 /* next */
            ifnonnull 1
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.channelInputQ:Ljdk/incubator/http/internal/common/Queue;
            invokevirtual jdk.incubator.http.internal.common.Queue.poll:()Ljava/lang/Object;
            checkcast jdk.incubator.http.internal.common.ByteBufferReference
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 1 /* next */
      StackMap locals:
      StackMap stack: jdk.incubator.http.internal.common.ByteBufferReference
         2: areturn
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference next
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/incubator/http/AsyncSSLDelegate;
            0    3     1  next  Ljdk/incubator/http/internal/common/ByteBufferReference;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      next  

  public void upperRead();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 520
            aconst_null
            astore 2 /* next */
        start local 2 // jdk.incubator.http.internal.common.ByteBufferReference next
         1: .line 521
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.reader:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         2: .line 523
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.pollInput:()Ljdk/incubator/http/internal/common/ByteBufferReference;
            astore 1 /* src */
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference src
         3: .line 524
            aload 1 /* src */
            ifnonnull 6
         4: .line 525
            aload 3
            monitorexit
         5: return
         6: .line 528
      StackMap locals: jdk.incubator.http.internal.common.ByteBufferReference jdk.incubator.http.internal.common.ByteBufferReference java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 1 /* src */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.get:()Ljava/nio/ByteBuffer;
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.unwrapBuffer:(Ljava/nio/ByteBuffer;)Ljdk/incubator/http/AsyncSSLDelegate$EngineResult;
            astore 4 /* r */
        start local 4 // jdk.incubator.http.AsyncSSLDelegate$EngineResult r
         7: .line 529
            invokestatic jdk.incubator.http.AsyncSSLDelegate.$SWITCH_TABLE$javax$net$ssl$SSLEngineResult$Status:()[I
            aload 4 /* r */
            getfield jdk.incubator.http.AsyncSSLDelegate$EngineResult.result:Ljavax/net/ssl/SSLEngineResult;
            invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
            invokevirtual javax.net.ssl.SSLEngineResult$Status.ordinal:()I
            iaload
            tableswitch { // 1 - 3
                    1: 8
                    2: 25
                    3: 18
              default: 25
          }
         8: .line 532
      StackMap locals: jdk.incubator.http.AsyncSSLDelegate$EngineResult
      StackMap stack:
            aload 0 /* this */
            aload 2 /* next */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.pollInput:(Ljdk/incubator/http/internal/common/ByteBufferReference;)Ljdk/incubator/http/internal/common/ByteBufferReference;
            astore 2 /* next */
         9: .line 533
            aload 2 /* next */
            ifnonnull 13
        10: .line 536
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.channelInputQ:Ljdk/incubator/http/internal/common/Queue;
            aload 1 /* src */
            invokevirtual jdk.incubator.http.internal.common.Queue.pushback:(Ljava/lang/Object;)V
        11: .line 537
            aload 3
            monitorexit
        12: return
        13: .line 539
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* src */
            aload 2 /* next */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.shift:(Ljdk/incubator/http/internal/common/ByteBufferReference;Ljdk/incubator/http/internal/common/ByteBufferReference;)Ljdk/incubator/http/internal/common/ByteBufferReference;
            astore 1 /* src */
        14: .line 540
            aload 2 /* next */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.get:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 25
        15: .line 541
            aload 2 /* next */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.clear:()V
        16: .line 542
            aconst_null
            astore 2 /* next */
        17: .line 545
            goto 25
        18: .line 548
      StackMap locals:
      StackMap stack:
            aload 4 /* r */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate$EngineResult.handshaking:()Z
            ifeq 24
        19: .line 552
            ldc "Read: needs handshake"
            iconst_0
            anewarray java.lang.Object
            invokestatic jdk.incubator.http.internal.common.Log.logTrace:(Ljava/lang/String;[Ljava/lang/Object;)V
        20: .line 553
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.channelInputQ:Ljdk/incubator/http/internal/common/Queue;
            aload 1 /* src */
            invokevirtual jdk.incubator.http.internal.common.Queue.pushback:(Ljava/lang/Object;)V
        21: .line 554
            aload 0 /* this */
            ldc "Read"
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.startHandshake:(Ljava/lang/String;)V
        22: .line 555
            aload 3
            monitorexit
        23: return
        24: .line 557
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.asyncReceiver:Ljava/util/function/Consumer;
            aload 4 /* r */
            getfield jdk.incubator.http.AsyncSSLDelegate$EngineResult.destBuffer:Ljdk/incubator/http/internal/common/ByteBufferReference;
            invokeinterface java.util.function.Consumer.accept:(Ljava/lang/Object;)V
        25: .line 559
      StackMap locals:
      StackMap stack:
            aload 1 /* src */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.get:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 27
        26: .line 560
            goto 6
        27: .line 562
      StackMap locals:
      StackMap stack:
            aload 1 /* src */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.clear:()V
        28: .line 563
            aload 0 /* this */
            aload 2 /* next */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.pollInput:(Ljdk/incubator/http/internal/common/ByteBufferReference;)Ljdk/incubator/http/internal/common/ByteBufferReference;
            astore 1 /* src */
        29: .line 564
            aconst_null
            astore 2 /* next */
        30: .line 565
            aload 1 /* src */
            ifnonnull 6
        31: .line 566
            aload 3
            monitorexit
        32: return
        end local 4 // jdk.incubator.http.AsyncSSLDelegate$EngineResult r
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference src
        33: .line 569
      StackMap locals: jdk.incubator.http.AsyncSSLDelegate top jdk.incubator.http.internal.common.ByteBufferReference java.lang.Object
      StackMap stack: java.lang.Throwable
            astore 4 /* t */
        start local 4 // java.lang.Throwable t
        34: .line 570
            aload 0 /* this */
            aload 4 /* t */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.closeExceptionally:(Ljava/lang/Throwable;)V
        35: .line 571
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.errorHandler:Ljava/util/function/Consumer;
            aload 4 /* t */
            invokeinterface java.util.function.Consumer.accept:(Ljava/lang/Object;)V
        end local 4 // java.lang.Throwable t
        36: .line 521
            aload 3
            monitorexit
        37: goto 40
      StackMap locals:
      StackMap stack: java.lang.Throwable
        38: aload 3
            monitorexit
        39: athrow
        40: .line 574
      StackMap locals:
      StackMap stack:
            return
        end local 2 // jdk.incubator.http.internal.common.ByteBufferReference next
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   41     0  this  Ljdk/incubator/http/AsyncSSLDelegate;
            3   33     1   src  Ljdk/incubator/http/internal/common/ByteBufferReference;
            1   41     2  next  Ljdk/incubator/http/internal/common/ByteBufferReference;
            7   33     4     r  Ljdk/incubator/http/AsyncSSLDelegate$EngineResult;
           34   36     4     t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     4      33  Class java.lang.Throwable
           6    11      33  Class java.lang.Throwable
          13    22      33  Class java.lang.Throwable
          24    31      33  Class java.lang.Throwable
           2     5      38  any
           6    12      38  any
          13    23      38  any
          24    32      38  any
          33    37      38  any
          38    39      38  any

  jdk.incubator.http.internal.common.ByteBufferReference shift(jdk.incubator.http.internal.common.ByteBufferReference, jdk.incubator.http.internal.common.ByteBufferReference);
    descriptor: (Ljdk/incubator/http/internal/common/ByteBufferReference;Ljdk/incubator/http/internal/common/ByteBufferReference;)Ljdk/incubator/http/internal/common/ByteBufferReference;
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference ref1
        start local 2 // jdk.incubator.http.internal.common.ByteBufferReference ref2
         0: .line 577
            aload 1 /* ref1 */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.get:()Ljava/nio/ByteBuffer;
            astore 3 /* buf1 */
        start local 3 // java.nio.ByteBuffer buf1
         1: .line 578
            aload 3 /* buf1 */
            invokevirtual java.nio.ByteBuffer.capacity:()I
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.engine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getPacketBufferSize:()I
            if_icmpge 9
         2: .line 579
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.getNetBuffer:()Ljdk/incubator/http/internal/common/ByteBufferReference;
            astore 4 /* newRef */
        start local 4 // jdk.incubator.http.internal.common.ByteBufferReference newRef
         3: .line 580
            aload 4 /* newRef */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.get:()Ljava/nio/ByteBuffer;
            astore 5 /* newBuf */
        start local 5 // java.nio.ByteBuffer newBuf
         4: .line 581
            aload 5 /* newBuf */
            aload 3 /* buf1 */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
         5: .line 582
            aload 5 /* newBuf */
            astore 3 /* buf1 */
         6: .line 583
            aload 1 /* ref1 */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.clear:()V
         7: .line 584
            aload 4 /* newRef */
            astore 1 /* ref1 */
        end local 5 // java.nio.ByteBuffer newBuf
        end local 4 // jdk.incubator.http.internal.common.ByteBufferReference newRef
         8: .line 585
            goto 10
         9: .line 586
      StackMap locals: java.nio.ByteBuffer
      StackMap stack:
            aload 3 /* buf1 */
            invokevirtual java.nio.ByteBuffer.compact:()Ljava/nio/ByteBuffer;
            pop
        10: .line 588
      StackMap locals:
      StackMap stack:
            aload 2 /* ref2 */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.get:()Ljava/nio/ByteBuffer;
            astore 4 /* buf2 */
        start local 4 // java.nio.ByteBuffer buf2
        11: .line 589
            aload 4 /* buf2 */
            aload 3 /* buf1 */
            aload 3 /* buf1 */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            aload 4 /* buf2 */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            invokestatic java.lang.Math.min:(II)I
            invokestatic jdk.incubator.http.internal.common.Utils.copy:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;I)V
        12: .line 590
            aload 3 /* buf1 */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
        13: .line 591
            aload 1 /* ref1 */
            areturn
        end local 4 // java.nio.ByteBuffer buf2
        end local 3 // java.nio.ByteBuffer buf1
        end local 2 // jdk.incubator.http.internal.common.ByteBufferReference ref2
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference ref1
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Ljdk/incubator/http/AsyncSSLDelegate;
            0   14     1    ref1  Ljdk/incubator/http/internal/common/ByteBufferReference;
            0   14     2    ref2  Ljdk/incubator/http/internal/common/ByteBufferReference;
            1   14     3    buf1  Ljava/nio/ByteBuffer;
            3    8     4  newRef  Ljdk/incubator/http/internal/common/ByteBufferReference;
            4    8     5  newBuf  Ljava/nio/ByteBuffer;
           11   14     4    buf2  Ljava/nio/ByteBuffer;
    MethodParameters:
      Name  Flags
      ref1  
      ref2  

  jdk.incubator.http.internal.common.ByteBufferReference combine(jdk.incubator.http.internal.common.ByteBufferReference, jdk.incubator.http.internal.common.ByteBufferReference);
    descriptor: (Ljdk/incubator/http/internal/common/ByteBufferReference;Ljdk/incubator/http/internal/common/ByteBufferReference;)Ljdk/incubator/http/internal/common/ByteBufferReference;
    flags: (0x0000) 
    Code:
      stack=2, locals=8, args_size=3
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
        start local 1 // jdk.incubator.http.internal.common.ByteBufferReference ref1
        start local 2 // jdk.incubator.http.internal.common.ByteBufferReference ref2
         0: .line 596
            aload 1 /* ref1 */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.get:()Ljava/nio/ByteBuffer;
            astore 3 /* buf1 */
        start local 3 // java.nio.ByteBuffer buf1
         1: .line 597
            aload 2 /* ref2 */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.get:()Ljava/nio/ByteBuffer;
            astore 4 /* buf2 */
        start local 4 // java.nio.ByteBuffer buf2
         2: .line 598
            aload 3 /* buf1 */
            invokevirtual java.nio.ByteBuffer.capacity:()I
            aload 3 /* buf1 */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            isub
            istore 5 /* avail1 */
        start local 5 // int avail1
         3: .line 599
            aload 4 /* buf2 */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 5 /* avail1 */
            if_icmpge 9
         4: .line 600
            aload 3 /* buf1 */
            invokevirtual java.nio.ByteBuffer.compact:()Ljava/nio/ByteBuffer;
            pop
         5: .line 601
            aload 3 /* buf1 */
            aload 4 /* buf2 */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
         6: .line 602
            aload 3 /* buf1 */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
         7: .line 603
            aload 2 /* ref2 */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.clear:()V
         8: .line 604
            aload 1 /* ref1 */
            areturn
         9: .line 606
      StackMap locals: java.nio.ByteBuffer java.nio.ByteBuffer int
      StackMap stack:
            aload 3 /* buf1 */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            aload 4 /* buf2 */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iadd
            istore 6 /* newsize */
        start local 6 // int newsize
        10: .line 607
            iload 6 /* newsize */
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 7 /* newbuf */
        start local 7 // java.nio.ByteBuffer newbuf
        11: .line 608
            aload 7 /* newbuf */
            aload 3 /* buf1 */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
        12: .line 609
            aload 7 /* newbuf */
            aload 4 /* buf2 */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
        13: .line 610
            aload 7 /* newbuf */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
        14: .line 611
            aload 1 /* ref1 */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.clear:()V
        15: .line 612
            aload 2 /* ref2 */
            invokevirtual jdk.incubator.http.internal.common.ByteBufferReference.clear:()V
        16: .line 613
            aload 7 /* newbuf */
            invokestatic jdk.incubator.http.internal.common.ByteBufferReference.of:(Ljava/nio/ByteBuffer;)Ljdk/incubator/http/internal/common/ByteBufferReference;
            areturn
        end local 7 // java.nio.ByteBuffer newbuf
        end local 6 // int newsize
        end local 5 // int avail1
        end local 4 // java.nio.ByteBuffer buf2
        end local 3 // java.nio.ByteBuffer buf1
        end local 2 // jdk.incubator.http.internal.common.ByteBufferReference ref2
        end local 1 // jdk.incubator.http.internal.common.ByteBufferReference ref1
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   17     0     this  Ljdk/incubator/http/AsyncSSLDelegate;
            0   17     1     ref1  Ljdk/incubator/http/internal/common/ByteBufferReference;
            0   17     2     ref2  Ljdk/incubator/http/internal/common/ByteBufferReference;
            1   17     3     buf1  Ljava/nio/ByteBuffer;
            2   17     4     buf2  Ljava/nio/ByteBuffer;
            3   17     5   avail1  I
           10   17     6  newsize  I
           11   17     7   newbuf  Ljava/nio/ByteBuffer;
    MethodParameters:
      Name  Flags
      ref1  
      ref2  

  javax.net.ssl.SSLParameters getSSLParameters();
    descriptor: ()Ljavax/net/ssl/SSLParameters;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 617
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.sslParameters:Ljavax/net/ssl/SSLParameters;
            areturn
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/AsyncSSLDelegate;

  static void logParams(javax.net.ssl.SSLParameters);
    descriptor: (Ljavax/net/ssl/SSLParameters;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // javax.net.ssl.SSLParameters p
         0: .line 621
            invokestatic jdk.incubator.http.internal.common.Log.ssl:()Z
            ifne 2
         1: .line 622
            return
         2: .line 625
      StackMap locals:
      StackMap stack:
            aload 0 /* p */
            ifnonnull 5
         3: .line 626
            ldc "SSLParameters: Null params"
            iconst_0
            anewarray java.lang.Object
            invokestatic jdk.incubator.http.internal.common.Log.logSSL:(Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 627
            return
         5: .line 630
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "SSLParameters:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         6: .line 631
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* params */
        start local 2 // java.util.List params
         7: .line 632
            aload 0 /* p */
            invokevirtual javax.net.ssl.SSLParameters.getCipherSuites:()[Ljava/lang/String;
            ifnull 15
         8: .line 633
            aload 0 /* p */
            invokevirtual javax.net.ssl.SSLParameters.getCipherSuites:()[Ljava/lang/String;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 14
      StackMap locals: javax.net.ssl.SSLParameters java.lang.StringBuilder java.util.List top int int java.lang.String[]
      StackMap stack:
         9: aload 6
            iload 4
            aaload
            astore 3 /* cipher */
        start local 3 // java.lang.String cipher
        10: .line 634
            aload 1 /* sb */
            ldc "\n    cipher: {"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        11: .line 635
            aload 2 /* params */
            invokeinterface java.util.List.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "}"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        12: .line 636
            aload 2 /* params */
            aload 3 /* cipher */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // java.lang.String cipher
        13: .line 633
            iinc 4 1
      StackMap locals:
      StackMap stack:
        14: iload 4
            iload 5
            if_icmplt 9
        15: .line 642
      StackMap locals: javax.net.ssl.SSLParameters java.lang.StringBuilder java.util.List
      StackMap stack:
            aload 0 /* p */
            invokevirtual javax.net.ssl.SSLParameters.getApplicationProtocols:()[Ljava/lang/String;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 21
      StackMap locals: javax.net.ssl.SSLParameters java.lang.StringBuilder java.util.List top int int java.lang.String[]
      StackMap stack:
        16: aload 6
            iload 4
            aaload
            astore 3 /* approto */
        start local 3 // java.lang.String approto
        17: .line 643
            aload 1 /* sb */
            ldc "\n    application protocol: {"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        18: .line 644
            aload 2 /* params */
            invokeinterface java.util.List.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "}"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        19: .line 645
            aload 2 /* params */
            aload 3 /* approto */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // java.lang.String approto
        20: .line 642
            iinc 4 1
      StackMap locals:
      StackMap stack:
        21: iload 4
            iload 5
            if_icmplt 16
        22: .line 649
            aload 0 /* p */
            invokevirtual javax.net.ssl.SSLParameters.getProtocols:()[Ljava/lang/String;
            ifnull 30
        23: .line 650
            aload 0 /* p */
            invokevirtual javax.net.ssl.SSLParameters.getProtocols:()[Ljava/lang/String;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 29
      StackMap locals:
      StackMap stack:
        24: aload 6
            iload 4
            aaload
            astore 3 /* protocol */
        start local 3 // java.lang.String protocol
        25: .line 651
            aload 1 /* sb */
            ldc "\n    protocol: {"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        26: .line 652
            aload 2 /* params */
            invokeinterface java.util.List.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "}"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        27: .line 653
            aload 2 /* params */
            aload 3 /* protocol */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // java.lang.String protocol
        28: .line 650
            iinc 4 1
      StackMap locals:
      StackMap stack:
        29: iload 4
            iload 5
            if_icmplt 24
        30: .line 657
      StackMap locals: javax.net.ssl.SSLParameters java.lang.StringBuilder java.util.List
      StackMap stack:
            aload 0 /* p */
            invokevirtual javax.net.ssl.SSLParameters.getServerNames:()Ljava/util/List;
            ifnull 37
        31: .line 658
            aload 0 /* p */
            invokevirtual javax.net.ssl.SSLParameters.getServerNames:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 36
      StackMap locals: javax.net.ssl.SSLParameters java.lang.StringBuilder java.util.List top java.util.Iterator
      StackMap stack:
        32: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.net.ssl.SNIServerName
            astore 3 /* sname */
        start local 3 // javax.net.ssl.SNIServerName sname
        33: .line 659
            aload 1 /* sb */
            ldc "\n    server name: {"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        34: .line 660
            aload 2 /* params */
            invokeinterface java.util.List.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "}"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        35: .line 661
            aload 2 /* params */
            aload 3 /* sname */
            invokevirtual javax.net.ssl.SNIServerName.toString:()Ljava/lang/String;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // javax.net.ssl.SNIServerName sname
        36: .line 658
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 32
        37: .line 664
      StackMap locals: javax.net.ssl.SSLParameters java.lang.StringBuilder java.util.List
      StackMap stack:
            aload 1 /* sb */
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        38: .line 666
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* params */
            invokeinterface java.util.List.toArray:()[Ljava/lang/Object;
            invokestatic jdk.incubator.http.internal.common.Log.logSSL:(Ljava/lang/String;[Ljava/lang/Object;)V
        39: .line 667
            return
        end local 2 // java.util.List params
        end local 1 // java.lang.StringBuilder sb
        end local 0 // javax.net.ssl.SSLParameters p
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   40     0         p  Ljavax/net/ssl/SSLParameters;
            6   40     1        sb  Ljava/lang/StringBuilder;
            7   40     2    params  Ljava/util/List<Ljava/lang/Object;>;
           10   13     3    cipher  Ljava/lang/String;
           17   20     3   approto  Ljava/lang/String;
           25   28     3  protocol  Ljava/lang/String;
           33   36     3     sname  Ljavax/net/ssl/SNIServerName;
    MethodParameters:
      Name  Flags
      p     

  java.lang.String getSessionInfo();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=2, locals=6, args_size=1
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 670
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 671
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.engine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getApplicationProtocol:()Ljava/lang/String;
            astore 2 /* application */
        start local 2 // java.lang.String application
         2: .line 672
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.engine:Ljavax/net/ssl/SSLEngine;
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            astore 3 /* sess */
        start local 3 // javax.net.ssl.SSLSession sess
         3: .line 673
            aload 3 /* sess */
            invokeinterface javax.net.ssl.SSLSession.getCipherSuite:()Ljava/lang/String;
            astore 4 /* cipher */
        start local 4 // java.lang.String cipher
         4: .line 674
            aload 3 /* sess */
            invokeinterface javax.net.ssl.SSLSession.getProtocol:()Ljava/lang/String;
            astore 5 /* protocol */
        start local 5 // java.lang.String protocol
         5: .line 675
            aload 1 /* sb */
            ldc "Handshake complete alpn: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         6: .line 676
            aload 2 /* application */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         7: .line 677
            ldc ", Cipher: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         8: .line 678
            aload 4 /* cipher */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         9: .line 679
            ldc ", Protocol: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        10: .line 680
            aload 5 /* protocol */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        11: .line 681
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 5 // java.lang.String protocol
        end local 4 // java.lang.String cipher
        end local 3 // javax.net.ssl.SSLSession sess
        end local 2 // java.lang.String application
        end local 1 // java.lang.StringBuilder sb
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         this  Ljdk/incubator/http/AsyncSSLDelegate;
            1   12     1           sb  Ljava/lang/StringBuilder;
            2   12     2  application  Ljava/lang/String;
            3   12     3         sess  Ljavax/net/ssl/SSLSession;
            4   12     4       cipher  Ljava/lang/String;
            5   12     5     protocol  Ljava/lang/String;

  static int[] $SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 91
            getstatic jdk.incubator.http.AsyncSSLDelegate.$SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic javax.net.ssl.SSLEngineResult$HandshakeStatus.values:()[Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.FINISHED:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
            iconst_2
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
            iconst_3
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_UNWRAP:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
            iconst_5
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_UNWRAP_AGAIN:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
            bipush 6
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_WRAP:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
            iconst_4
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NOT_HANDSHAKING:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
            iconst_1
            iastore
        18: goto 20
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        19: pop
      StackMap locals:
      StackMap stack:
        20: aload 0
            dup
            putstatic jdk.incubator.http.AsyncSSLDelegate.$SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
          17    18      19  Class java.lang.NoSuchFieldError

  static int[] $SWITCH_TABLE$javax$net$ssl$SSLEngineResult$Status();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 91
            getstatic jdk.incubator.http.AsyncSSLDelegate.$SWITCH_TABLE$javax$net$ssl$SSLEngineResult$Status:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic javax.net.ssl.SSLEngineResult$Status.values:()[Ljavax/net/ssl/SSLEngineResult$Status;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_OVERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
            invokevirtual javax.net.ssl.SSLEngineResult$Status.ordinal:()I
            iconst_2
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_UNDERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
            invokevirtual javax.net.ssl.SSLEngineResult$Status.ordinal:()I
            iconst_1
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic javax.net.ssl.SSLEngineResult$Status.CLOSED:Ljavax/net/ssl/SSLEngineResult$Status;
            invokevirtual javax.net.ssl.SSLEngineResult$Status.ordinal:()I
            iconst_4
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
            invokevirtual javax.net.ssl.SSLEngineResult$Status.ordinal:()I
            iconst_3
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            dup
            putstatic jdk.incubator.http.AsyncSSLDelegate.$SWITCH_TABLE$javax$net$ssl$SSLEngineResult$Status:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError

  private void lambda$3(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // jdk.incubator.http.AsyncSSLDelegate this
         0: .line 244
            aload 0 /* this */
            aload 1
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.doHandshakeNow:(Ljava/lang/String;)V
         1: .line 245
            goto 6
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: astore 2 /* t */
        start local 2 // java.lang.Throwable t
         3: .line 246
            ldc "{0}: handshake failed: {1}"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1
            aastore
            dup
            iconst_1
            aload 2 /* t */
            aastore
            invokestatic jdk.incubator.http.internal.common.Log.logTrace:(Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 247
            aload 0 /* this */
            aload 2 /* t */
            invokevirtual jdk.incubator.http.AsyncSSLDelegate.closeExceptionally:(Ljava/lang/Throwable;)V
         5: .line 248
            aload 0 /* this */
            getfield jdk.incubator.http.AsyncSSLDelegate.errorHandler:Ljava/util/function/Consumer;
            aload 2 /* t */
            invokeinterface java.util.function.Consumer.accept:(Ljava/lang/Object;)V
        end local 2 // java.lang.Throwable t
         6: .line 250
      StackMap locals:
      StackMap stack:
            return
        end local 0 // jdk.incubator.http.AsyncSSLDelegate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Ljdk/incubator/http/AsyncSSLDelegate;
            3    6     2     t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Throwable

  private static void lambda$4(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Runnable task
         0: .line 413
            aload 0 /* task */
            invokeinterface java.lang.Runnable.run:()V
            return
        end local 0 // java.lang.Runnable task
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  task  Ljava/lang/Runnable;
}
SourceFile: "AsyncSSLDelegate.java"
NestMembers:
  jdk.incubator.http.AsyncSSLDelegate$EngineResult
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public final HandshakeStatus = javax.net.ssl.SSLEngineResult$HandshakeStatus of javax.net.ssl.SSLEngineResult
  public final Status = javax.net.ssl.SSLEngineResult$Status of javax.net.ssl.SSLEngineResult
  EngineResult = jdk.incubator.http.AsyncSSLDelegate$EngineResult of jdk.incubator.http.AsyncSSLDelegate