abstract class jdk.incubator.http.AbstractAsyncSSLConnection extends jdk.incubator.http.HttpConnection
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: jdk.incubator.http.AbstractAsyncSSLConnection
  super_class: jdk.incubator.http.HttpConnection
{
  protected final javax.net.ssl.SSLEngine engine;
    descriptor: Ljavax/net/ssl/SSLEngine;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.lang.String serverName;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final javax.net.ssl.SSLParameters sslParameters;
    descriptor: Ljavax/net/ssl/SSLParameters;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 64
            ldc Ljdk/incubator/http/AbstractAsyncSSLConnection;
            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.AbstractAsyncSSLConnection.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.net.InetSocketAddress, jdk.incubator.http.HttpClientImpl, java.lang.String, java.lang.String[]);
    descriptor: (Ljava/net/InetSocketAddress;Ljdk/incubator/http/HttpClientImpl;Ljava/lang/String;[Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // jdk.incubator.http.AbstractAsyncSSLConnection this
        start local 1 // java.net.InetSocketAddress addr
        start local 2 // jdk.incubator.http.HttpClientImpl client
        start local 3 // java.lang.String serverName
        start local 4 // java.lang.String[] alpn
         0: .line 74
            aload 0 /* this */
            aload 1 /* addr */
            aload 2 /* client */
            invokespecial jdk.incubator.http.HttpConnection.<init>:(Ljava/net/InetSocketAddress;Ljdk/incubator/http/HttpClientImpl;)V
         1: .line 75
            aload 0 /* this */
            aload 3 /* serverName */
            putfield jdk.incubator.http.AbstractAsyncSSLConnection.serverName:Ljava/lang/String;
         2: .line 76
            aload 2 /* client */
            invokevirtual jdk.incubator.http.HttpClientImpl.theSSLContext:()Ljavax/net/ssl/SSLContext;
            astore 5 /* context */
        start local 5 // javax.net.ssl.SSLContext context
         3: .line 77
            aload 0 /* this */
            aload 2 /* client */
            aload 3 /* serverName */
            aload 4 /* alpn */
            invokestatic jdk.incubator.http.AbstractAsyncSSLConnection.createSSLParameters:(Ljdk/incubator/http/HttpClientImpl;Ljava/lang/String;[Ljava/lang/String;)Ljavax/net/ssl/SSLParameters;
            putfield jdk.incubator.http.AbstractAsyncSSLConnection.sslParameters:Ljavax/net/ssl/SSLParameters;
         4: .line 78
            aload 0 /* this */
            getfield jdk.incubator.http.AbstractAsyncSSLConnection.sslParameters:Ljavax/net/ssl/SSLParameters;
            invokestatic jdk.incubator.http.internal.common.Log.logParams:(Ljavax/net/ssl/SSLParameters;)V
         5: .line 79
            aload 0 /* this */
            aload 5 /* context */
            aload 0 /* this */
            getfield jdk.incubator.http.AbstractAsyncSSLConnection.sslParameters:Ljavax/net/ssl/SSLParameters;
            invokestatic jdk.incubator.http.AbstractAsyncSSLConnection.createEngine:(Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/SSLParameters;)Ljavax/net/ssl/SSLEngine;
            putfield jdk.incubator.http.AbstractAsyncSSLConnection.engine:Ljavax/net/ssl/SSLEngine;
         6: .line 80
            return
        end local 5 // javax.net.ssl.SSLContext context
        end local 4 // java.lang.String[] alpn
        end local 3 // java.lang.String serverName
        end local 2 // jdk.incubator.http.HttpClientImpl client
        end local 1 // java.net.InetSocketAddress addr
        end local 0 // jdk.incubator.http.AbstractAsyncSSLConnection this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Ljdk/incubator/http/AbstractAsyncSSLConnection;
            0    7     1        addr  Ljava/net/InetSocketAddress;
            0    7     2      client  Ljdk/incubator/http/HttpClientImpl;
            0    7     3  serverName  Ljava/lang/String;
            0    7     4        alpn  [Ljava/lang/String;
            3    7     5     context  Ljavax/net/ssl/SSLContext;
    MethodParameters:
            Name  Flags
      addr        
      client      
      serverName  
      alpn        

  abstract jdk.incubator.http.HttpConnection plainConnection();
    descriptor: ()Ljdk/incubator/http/HttpConnection;
    flags: (0x0400) ACC_ABSTRACT

  abstract jdk.incubator.http.internal.common.SSLTube getConnectionFlow();
    descriptor: ()Ljdk/incubator/http/internal/common/SSLTube;
    flags: (0x0400) ACC_ABSTRACT

  final java.util.concurrent.CompletableFuture<java.lang.String> getALPN();
    descriptor: ()Ljava/util/concurrent/CompletableFuture;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AbstractAsyncSSLConnection this
         0: .line 86
            getstatic jdk.incubator.http.AbstractAsyncSSLConnection.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AbstractAsyncSSLConnection.connected:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 87
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AbstractAsyncSSLConnection.getConnectionFlow:()Ljdk/incubator/http/internal/common/SSLTube;
            invokevirtual jdk.incubator.http.internal.common.SSLTube.getALPN:()Ljava/util/concurrent/CompletableFuture;
            areturn
        end local 0 // jdk.incubator.http.AbstractAsyncSSLConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/incubator/http/AbstractAsyncSSLConnection;
    Signature: ()Ljava/util/concurrent/CompletableFuture<Ljava/lang/String;>;

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

  private static javax.net.ssl.SSLParameters createSSLParameters(jdk.incubator.http.HttpClientImpl, java.lang.String, java.lang.String[]);
    descriptor: (Ljdk/incubator/http/HttpClientImpl;Ljava/lang/String;[Ljava/lang/String;)Ljavax/net/ssl/SSLParameters;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // jdk.incubator.http.HttpClientImpl client
        start local 1 // java.lang.String serverName
        start local 2 // java.lang.String[] alpn
         0: .line 95
            aload 0 /* client */
            invokevirtual jdk.incubator.http.HttpClientImpl.sslParameters:()Ljavax/net/ssl/SSLParameters;
            astore 3 /* sslp */
        start local 3 // javax.net.ssl.SSLParameters sslp
         1: .line 96
            aload 3 /* sslp */
            invokestatic jdk.incubator.http.internal.common.Utils.copySSLParameters:(Ljavax/net/ssl/SSLParameters;)Ljavax/net/ssl/SSLParameters;
            astore 4 /* sslParameters */
        start local 4 // javax.net.ssl.SSLParameters sslParameters
         2: .line 97
            aload 2 /* alpn */
            ifnull 8
         3: .line 98
            ldc "AbstractAsyncSSLConnection: Setting application protocols: {0}"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 99
            aload 2 /* alpn */
            invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)Ljava/lang/String;
            aastore
         5: .line 98
            invokestatic jdk.incubator.http.internal.common.Log.logSSL:(Ljava/lang/String;[Ljava/lang/Object;)V
         6: .line 100
            aload 4 /* sslParameters */
            aload 2 /* alpn */
            invokevirtual javax.net.ssl.SSLParameters.setApplicationProtocols:([Ljava/lang/String;)V
         7: .line 101
            goto 9
         8: .line 102
      StackMap locals: javax.net.ssl.SSLParameters javax.net.ssl.SSLParameters
      StackMap stack:
            ldc "AbstractAsyncSSLConnection: no applications set!"
            iconst_0
            anewarray java.lang.Object
            invokestatic jdk.incubator.http.internal.common.Log.logSSL:(Ljava/lang/String;[Ljava/lang/Object;)V
         9: .line 104
      StackMap locals:
      StackMap stack:
            aload 1 /* serverName */
            ifnull 11
        10: .line 105
            aload 4 /* sslParameters */
            new javax.net.ssl.SNIHostName
            dup
            aload 1 /* serverName */
            invokespecial javax.net.ssl.SNIHostName.<init>:(Ljava/lang/String;)V
            invokestatic java.util.List.of:(Ljava/lang/Object;)Ljava/util/List;
            invokevirtual javax.net.ssl.SSLParameters.setServerNames:(Ljava/util/List;)V
        11: .line 107
      StackMap locals:
      StackMap stack:
            aload 4 /* sslParameters */
            areturn
        end local 4 // javax.net.ssl.SSLParameters sslParameters
        end local 3 // javax.net.ssl.SSLParameters sslp
        end local 2 // java.lang.String[] alpn
        end local 1 // java.lang.String serverName
        end local 0 // jdk.incubator.http.HttpClientImpl client
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   12     0         client  Ljdk/incubator/http/HttpClientImpl;
            0   12     1     serverName  Ljava/lang/String;
            0   12     2           alpn  [Ljava/lang/String;
            1   12     3           sslp  Ljavax/net/ssl/SSLParameters;
            2   12     4  sslParameters  Ljavax/net/ssl/SSLParameters;
    MethodParameters:
            Name  Flags
      client      
      serverName  
      alpn        

  private static javax.net.ssl.SSLEngine createEngine(javax.net.ssl.SSLContext, javax.net.ssl.SSLParameters);
    descriptor: (Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/SSLParameters;)Ljavax/net/ssl/SSLEngine;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // javax.net.ssl.SSLContext context
        start local 1 // javax.net.ssl.SSLParameters sslParameters
         0: .line 112
            aload 0 /* context */
            invokevirtual javax.net.ssl.SSLContext.createSSLEngine:()Ljavax/net/ssl/SSLEngine;
            astore 2 /* engine */
        start local 2 // javax.net.ssl.SSLEngine engine
         1: .line 113
            aload 2 /* engine */
            iconst_1
            invokevirtual javax.net.ssl.SSLEngine.setUseClientMode:(Z)V
         2: .line 114
            aload 2 /* engine */
            aload 1 /* sslParameters */
            invokevirtual javax.net.ssl.SSLEngine.setSSLParameters:(Ljavax/net/ssl/SSLParameters;)V
         3: .line 115
            aload 2 /* engine */
            areturn
        end local 2 // javax.net.ssl.SSLEngine engine
        end local 1 // javax.net.ssl.SSLParameters sslParameters
        end local 0 // javax.net.ssl.SSLContext context
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0        context  Ljavax/net/ssl/SSLContext;
            0    4     1  sslParameters  Ljavax/net/ssl/SSLParameters;
            1    4     2         engine  Ljavax/net/ssl/SSLEngine;
    MethodParameters:
               Name  Flags
      context        
      sslParameters  

  final boolean isSecure();
    descriptor: ()Z
    flags: (0x0010) ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.http.AbstractAsyncSSLConnection this
         0: .line 120
            iconst_1
            ireturn
        end local 0 // jdk.incubator.http.AbstractAsyncSSLConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/http/AbstractAsyncSSLConnection;

  jdk.incubator.http.HttpConnection$DetachedConnectionChannel detachChannel();
    descriptor: ()Ljdk/incubator/http/HttpConnection$DetachedConnectionChannel;
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // jdk.incubator.http.AbstractAsyncSSLConnection this
         0: .line 181
            getstatic jdk.incubator.http.AbstractAsyncSSLConnection.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AbstractAsyncSSLConnection.client:()Ljdk/incubator/http/HttpClientImpl;
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 182
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.incubator.http.AbstractAsyncSSLConnection.plainConnection:()Ljdk/incubator/http/HttpConnection;
            invokevirtual jdk.incubator.http.HttpConnection.detachChannel:()Ljdk/incubator/http/HttpConnection$DetachedConnectionChannel;
            astore 1 /* detachedChannel */
        start local 1 // jdk.incubator.http.HttpConnection$DetachedConnectionChannel detachedChannel
         2: .line 183
            new jdk.incubator.http.SSLDelegate
            dup
            aload 0 /* this */
            getfield jdk.incubator.http.AbstractAsyncSSLConnection.engine:Ljavax/net/ssl/SSLEngine;
         3: .line 184
            aload 1 /* detachedChannel */
            invokevirtual jdk.incubator.http.HttpConnection$DetachedConnectionChannel.channel:()Ljava/nio/channels/SocketChannel;
         4: .line 183
            invokespecial jdk.incubator.http.SSLDelegate.<init>:(Ljavax/net/ssl/SSLEngine;Ljava/nio/channels/SocketChannel;)V
            astore 2 /* sslDelegate */
        start local 2 // jdk.incubator.http.SSLDelegate sslDelegate
         5: .line 185
            new jdk.incubator.http.AbstractAsyncSSLConnection$SSLConnectionChannel
            dup
            aload 1 /* detachedChannel */
            aload 2 /* sslDelegate */
            invokespecial jdk.incubator.http.AbstractAsyncSSLConnection$SSLConnectionChannel.<init>:(Ljdk/incubator/http/HttpConnection$DetachedConnectionChannel;Ljdk/incubator/http/SSLDelegate;)V
            areturn
        end local 2 // jdk.incubator.http.SSLDelegate sslDelegate
        end local 1 // jdk.incubator.http.HttpConnection$DetachedConnectionChannel detachedChannel
        end local 0 // jdk.incubator.http.AbstractAsyncSSLConnection this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0             this  Ljdk/incubator/http/AbstractAsyncSSLConnection;
            2    6     1  detachedChannel  Ljdk/incubator/http/HttpConnection$DetachedConnectionChannel;
            5    6     2      sslDelegate  Ljdk/incubator/http/SSLDelegate;

  jdk.incubator.http.internal.common.FlowTube getConnectionFlow();
    descriptor: ()Ljdk/incubator/http/internal/common/FlowTube;
    flags: (0x1040) ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual jdk.incubator.http.AbstractAsyncSSLConnection.getConnectionFlow:()Ljdk/incubator/http/internal/common/SSLTube;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "AbstractAsyncSSLConnection.java"
NestMembers:
  jdk.incubator.http.AbstractAsyncSSLConnection$SSLConnectionChannel
InnerClasses:
  final SSLConnectionChannel = jdk.incubator.http.AbstractAsyncSSLConnection$SSLConnectionChannel of jdk.incubator.http.AbstractAsyncSSLConnection
  abstract DetachedConnectionChannel = jdk.incubator.http.HttpConnection$DetachedConnectionChannel of jdk.incubator.http.HttpConnection