class com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream extends com.mongodb.internal.connection.AsynchronousChannelStream implements com.mongodb.connection.Stream
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream
  super_class: com.mongodb.internal.connection.AsynchronousChannelStream
{
  private final com.mongodb.internal.connection.tlschannel.async.AsynchronousTlsChannelGroup group;
    descriptor: Lcom/mongodb/internal/connection/tlschannel/async/AsynchronousTlsChannelGroup;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.mongodb.connection.TlsChannelStreamFactoryFactory$SelectorMonitor selectorMonitor;
    descriptor: Lcom/mongodb/connection/TlsChannelStreamFactoryFactory$SelectorMonitor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.mongodb.connection.SslSettings sslSettings;
    descriptor: Lcom/mongodb/connection/SslSettings;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(com.mongodb.ServerAddress, com.mongodb.connection.SocketSettings, com.mongodb.connection.SslSettings, com.mongodb.connection.BufferProvider, com.mongodb.internal.connection.tlschannel.async.AsynchronousTlsChannelGroup, com.mongodb.connection.TlsChannelStreamFactoryFactory$SelectorMonitor);
    descriptor: (Lcom/mongodb/ServerAddress;Lcom/mongodb/connection/SocketSettings;Lcom/mongodb/connection/SslSettings;Lcom/mongodb/connection/BufferProvider;Lcom/mongodb/internal/connection/tlschannel/async/AsynchronousTlsChannelGroup;Lcom/mongodb/connection/TlsChannelStreamFactoryFactory$SelectorMonitor;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=7, args_size=7
        start local 0 // com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream this
        start local 1 // com.mongodb.ServerAddress serverAddress
        start local 2 // com.mongodb.connection.SocketSettings settings
        start local 3 // com.mongodb.connection.SslSettings sslSettings
        start local 4 // com.mongodb.connection.BufferProvider bufferProvider
        start local 5 // com.mongodb.internal.connection.tlschannel.async.AsynchronousTlsChannelGroup group
        start local 6 // com.mongodb.connection.TlsChannelStreamFactoryFactory$SelectorMonitor selectorMonitor
         0: .line 194
            aload 0 /* this */
            aload 1 /* serverAddress */
            aload 2 /* settings */
            aload 4 /* bufferProvider */
            invokespecial com.mongodb.internal.connection.AsynchronousChannelStream.<init>:(Lcom/mongodb/ServerAddress;Lcom/mongodb/connection/SocketSettings;Lcom/mongodb/connection/BufferProvider;)V
         1: .line 195
            aload 0 /* this */
            aload 3 /* sslSettings */
            putfield com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream.sslSettings:Lcom/mongodb/connection/SslSettings;
         2: .line 196
            aload 0 /* this */
            aload 5 /* group */
            putfield com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream.group:Lcom/mongodb/internal/connection/tlschannel/async/AsynchronousTlsChannelGroup;
         3: .line 197
            aload 0 /* this */
            aload 6 /* selectorMonitor */
            putfield com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream.selectorMonitor:Lcom/mongodb/connection/TlsChannelStreamFactoryFactory$SelectorMonitor;
         4: .line 198
            return
        end local 6 // com.mongodb.connection.TlsChannelStreamFactoryFactory$SelectorMonitor selectorMonitor
        end local 5 // com.mongodb.internal.connection.tlschannel.async.AsynchronousTlsChannelGroup group
        end local 4 // com.mongodb.connection.BufferProvider bufferProvider
        end local 3 // com.mongodb.connection.SslSettings sslSettings
        end local 2 // com.mongodb.connection.SocketSettings settings
        end local 1 // com.mongodb.ServerAddress serverAddress
        end local 0 // com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    5     0             this  Lcom/mongodb/connection/TlsChannelStreamFactoryFactory$TlsChannelStream;
            0    5     1    serverAddress  Lcom/mongodb/ServerAddress;
            0    5     2         settings  Lcom/mongodb/connection/SocketSettings;
            0    5     3      sslSettings  Lcom/mongodb/connection/SslSettings;
            0    5     4   bufferProvider  Lcom/mongodb/connection/BufferProvider;
            0    5     5            group  Lcom/mongodb/internal/connection/tlschannel/async/AsynchronousTlsChannelGroup;
            0    5     6  selectorMonitor  Lcom/mongodb/connection/TlsChannelStreamFactoryFactory$SelectorMonitor;
    MethodParameters:
                 Name  Flags
      serverAddress    final
      settings         final
      sslSettings      final
      bufferProvider   final
      group            final
      selectorMonitor  final

  public void openAsync(com.mongodb.connection.AsyncCompletionHandler<java.lang.Void>);
    descriptor: (Lcom/mongodb/connection/AsyncCompletionHandler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream this
        start local 1 // com.mongodb.connection.AsyncCompletionHandler handler
         0: .line 202
            ldc "unopened"
            aload 0 /* this */
            invokevirtual com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream.getChannel:()Lcom/mongodb/internal/connection/ExtendedAsynchronousByteChannel;
            ifnonnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack: java.lang.String
         1: iconst_0
      StackMap locals: com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream com.mongodb.connection.AsyncCompletionHandler
      StackMap stack: java.lang.String int
         2: invokestatic com.mongodb.assertions.Assertions.isTrue:(Ljava/lang/String;Z)V
         3: .line 204
            invokestatic java.nio.channels.SocketChannel.open:()Ljava/nio/channels/SocketChannel;
            astore 2 /* socketChannel */
        start local 2 // java.nio.channels.SocketChannel socketChannel
         4: .line 205
            aload 2 /* socketChannel */
            iconst_0
            invokevirtual java.nio.channels.SocketChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
         5: .line 207
            aload 2 /* socketChannel */
            getstatic java.net.StandardSocketOptions.TCP_NODELAY:Ljava/net/SocketOption;
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual java.nio.channels.SocketChannel.setOption:(Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/SocketChannel;
            pop
         6: .line 208
            aload 2 /* socketChannel */
            getstatic java.net.StandardSocketOptions.SO_KEEPALIVE:Ljava/net/SocketOption;
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual java.nio.channels.SocketChannel.setOption:(Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/SocketChannel;
            pop
         7: .line 209
            aload 0 /* this */
            invokevirtual com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream.getSettings:()Lcom/mongodb/connection/SocketSettings;
            invokevirtual com.mongodb.connection.SocketSettings.getReceiveBufferSize:()I
            ifle 9
         8: .line 210
            aload 2 /* socketChannel */
            getstatic java.net.StandardSocketOptions.SO_RCVBUF:Ljava/net/SocketOption;
            aload 0 /* this */
            invokevirtual com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream.getSettings:()Lcom/mongodb/connection/SocketSettings;
            invokevirtual com.mongodb.connection.SocketSettings.getReceiveBufferSize:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.nio.channels.SocketChannel.setOption:(Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/SocketChannel;
            pop
         9: .line 212
      StackMap locals: java.nio.channels.SocketChannel
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream.getSettings:()Lcom/mongodb/connection/SocketSettings;
            invokevirtual com.mongodb.connection.SocketSettings.getSendBufferSize:()I
            ifle 11
        10: .line 213
            aload 2 /* socketChannel */
            getstatic java.net.StandardSocketOptions.SO_SNDBUF:Ljava/net/SocketOption;
            aload 0 /* this */
            invokevirtual com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream.getSettings:()Lcom/mongodb/connection/SocketSettings;
            invokevirtual com.mongodb.connection.SocketSettings.getSendBufferSize:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.nio.channels.SocketChannel.setOption:(Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/SocketChannel;
            pop
        11: .line 216
      StackMap locals:
      StackMap stack:
            aload 2 /* socketChannel */
            aload 0 /* this */
            invokevirtual com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream.getServerAddress:()Lcom/mongodb/ServerAddress;
            invokevirtual com.mongodb.ServerAddress.getSocketAddress:()Ljava/net/InetSocketAddress;
            invokevirtual java.nio.channels.SocketChannel.connect:(Ljava/net/SocketAddress;)Z
            pop
        12: .line 218
            aload 0 /* this */
            getfield com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream.selectorMonitor:Lcom/mongodb/connection/TlsChannelStreamFactoryFactory$SelectorMonitor;
            aload 2 /* socketChannel */
            new com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream$1
            dup
            aload 0 /* this */
            aload 2 /* socketChannel */
            aload 1 /* handler */
            invokespecial com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream$1.<init>:(Lcom/mongodb/connection/TlsChannelStreamFactoryFactory$TlsChannelStream;Ljava/nio/channels/SocketChannel;Lcom/mongodb/connection/AsyncCompletionHandler;)V
            invokevirtual com.mongodb.connection.TlsChannelStreamFactoryFactory$SelectorMonitor.register:(Ljava/nio/channels/SocketChannel;Ljava/lang/Runnable;)V
        end local 2 // java.nio.channels.SocketChannel socketChannel
        13: .line 256
            goto 19
      StackMap locals: com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream com.mongodb.connection.AsyncCompletionHandler
      StackMap stack: java.io.IOException
        14: astore 2 /* e */
        start local 2 // java.io.IOException e
        15: .line 257
            aload 1 /* handler */
            new com.mongodb.MongoSocketOpenException
            dup
            ldc "Exception opening socket"
            aload 0 /* this */
            invokevirtual com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream.getServerAddress:()Lcom/mongodb/ServerAddress;
            aload 2 /* e */
            invokespecial com.mongodb.MongoSocketOpenException.<init>:(Ljava/lang/String;Lcom/mongodb/ServerAddress;Ljava/lang/Throwable;)V
            invokeinterface com.mongodb.connection.AsyncCompletionHandler.failed:(Ljava/lang/Throwable;)V
        end local 2 // java.io.IOException e
        16: goto 19
        17: .line 258
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2 /* t */
        start local 2 // java.lang.Throwable t
        18: .line 259
            aload 1 /* handler */
            aload 2 /* t */
            invokeinterface com.mongodb.connection.AsyncCompletionHandler.failed:(Ljava/lang/Throwable;)V
        end local 2 // java.lang.Throwable t
        19: .line 261
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.mongodb.connection.AsyncCompletionHandler handler
        end local 0 // com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   20     0           this  Lcom/mongodb/connection/TlsChannelStreamFactoryFactory$TlsChannelStream;
            0   20     1        handler  Lcom/mongodb/connection/AsyncCompletionHandler<Ljava/lang/Void;>;
            4   13     2  socketChannel  Ljava/nio/channels/SocketChannel;
           15   16     2              e  Ljava/io/IOException;
           18   19     2              t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           3    13      14  Class java.io.IOException
           3    13      17  Class java.lang.Throwable
    Signature: (Lcom/mongodb/connection/AsyncCompletionHandler<Ljava/lang/Void;>;)V
    MethodParameters:
         Name  Flags
      handler  final

  private javax.net.ssl.SSLContext getSslContext();
    descriptor: ()Ljavax/net/ssl/SSLContext;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream this
         0: .line 265
            aload 0 /* this */
            getfield com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream.sslSettings:Lcom/mongodb/connection/SslSettings;
            invokevirtual com.mongodb.connection.SslSettings.getContext:()Ljavax/net/ssl/SSLContext;
            ifnonnull 1
            invokestatic javax.net.ssl.SSLContext.getDefault:()Ljavax/net/ssl/SSLContext;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            getfield com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream.sslSettings:Lcom/mongodb/connection/SslSettings;
            invokevirtual com.mongodb.connection.SslSettings.getContext:()Ljavax/net/ssl/SSLContext;
      StackMap locals:
      StackMap stack: javax.net.ssl.SSLContext
         2: areturn
         3: .line 266
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 1 /* e */
        start local 1 // java.security.NoSuchAlgorithmException e
         4: .line 267
            new com.mongodb.MongoClientException
            dup
            ldc "Unable to create default SSLContext"
            aload 1 /* e */
            invokespecial com.mongodb.MongoClientException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.security.NoSuchAlgorithmException e
        end local 0 // com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/mongodb/connection/TlsChannelStreamFactoryFactory$TlsChannelStream;
            4    5     1     e  Ljava/security/NoSuchAlgorithmException;
      Exception table:
        from    to  target  type
           0     2       3  Class java.security.NoSuchAlgorithmException

  static void access$0(com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream, com.mongodb.internal.connection.ExtendedAsynchronousByteChannel);
    descriptor: (Lcom/mongodb/connection/TlsChannelStreamFactoryFactory$TlsChannelStream;Lcom/mongodb/internal/connection/ExtendedAsynchronousByteChannel;)V
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream.setChannel:(Lcom/mongodb/internal/connection/ExtendedAsynchronousByteChannel;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "TlsChannelStreamFactoryFactory.java"
NestHost: com.mongodb.connection.TlsChannelStreamFactoryFactory
InnerClasses:
  private SelectorMonitor = com.mongodb.connection.TlsChannelStreamFactoryFactory$SelectorMonitor of com.mongodb.connection.TlsChannelStreamFactoryFactory
  private TlsChannelStream = com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream of com.mongodb.connection.TlsChannelStreamFactoryFactory
  com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream$1
  private BufferProviderAllocator = com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream$BufferProviderAllocator of com.mongodb.connection.TlsChannelStreamFactoryFactory$TlsChannelStream