final class com.mongodb.connection.netty.NettyStream implements com.mongodb.connection.Stream
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.mongodb.connection.netty.NettyStream
  super_class: java.lang.Object
{
  private static final java.lang.String READ_HANDLER_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "ReadTimeoutHandler"

  private final com.mongodb.ServerAddress address;
    descriptor: Lcom/mongodb/ServerAddress;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  private final io.netty.channel.EventLoopGroup workerGroup;
    descriptor: Lio/netty/channel/EventLoopGroup;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Class<? extends io.netty.channel.socket.SocketChannel> socketChannelClass;
    descriptor: Ljava/lang/Class;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/Class<+Lio/netty/channel/socket/SocketChannel;>;

  private final io.netty.buffer.ByteBufAllocator allocator;
    descriptor: Lio/netty/buffer/ByteBufAllocator;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile boolean isClosed;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile io.netty.channel.Channel channel;
    descriptor: Lio/netty/channel/Channel;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private final java.util.LinkedList<io.netty.buffer.ByteBuf> pendingInboundBuffers;
    descriptor: Ljava/util/LinkedList;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/LinkedList<Lio/netty/buffer/ByteBuf;>;

  private volatile com.mongodb.connection.netty.NettyStream$PendingReader pendingReader;
    descriptor: Lcom/mongodb/connection/netty/NettyStream$PendingReader;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile java.lang.Throwable pendingException;
    descriptor: Ljava/lang/Throwable;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  void <init>(com.mongodb.ServerAddress, com.mongodb.connection.SocketSettings, com.mongodb.connection.SslSettings, io.netty.channel.EventLoopGroup, java.lang.Class<? extends io.netty.channel.socket.SocketChannel>, io.netty.buffer.ByteBufAllocator);
    descriptor: (Lcom/mongodb/ServerAddress;Lcom/mongodb/connection/SocketSettings;Lcom/mongodb/connection/SslSettings;Lio/netty/channel/EventLoopGroup;Ljava/lang/Class;Lio/netty/buffer/ByteBufAllocator;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=7, args_size=7
        start local 0 // com.mongodb.connection.netty.NettyStream this
        start local 1 // com.mongodb.ServerAddress address
        start local 2 // com.mongodb.connection.SocketSettings settings
        start local 3 // com.mongodb.connection.SslSettings sslSettings
        start local 4 // io.netty.channel.EventLoopGroup workerGroup
        start local 5 // java.lang.Class socketChannelClass
        start local 6 // io.netty.buffer.ByteBufAllocator allocator
         0: .line 85
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 81
            aload 0 /* this */
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putfield com.mongodb.connection.netty.NettyStream.pendingInboundBuffers:Ljava/util/LinkedList;
         2: .line 87
            aload 0 /* this */
            aload 1 /* address */
            putfield com.mongodb.connection.netty.NettyStream.address:Lcom/mongodb/ServerAddress;
         3: .line 88
            aload 0 /* this */
            aload 2 /* settings */
            putfield com.mongodb.connection.netty.NettyStream.settings:Lcom/mongodb/connection/SocketSettings;
         4: .line 89
            aload 0 /* this */
            aload 3 /* sslSettings */
            putfield com.mongodb.connection.netty.NettyStream.sslSettings:Lcom/mongodb/connection/SslSettings;
         5: .line 90
            aload 0 /* this */
            aload 4 /* workerGroup */
            putfield com.mongodb.connection.netty.NettyStream.workerGroup:Lio/netty/channel/EventLoopGroup;
         6: .line 91
            aload 0 /* this */
            aload 5 /* socketChannelClass */
            putfield com.mongodb.connection.netty.NettyStream.socketChannelClass:Ljava/lang/Class;
         7: .line 92
            aload 0 /* this */
            aload 6 /* allocator */
            putfield com.mongodb.connection.netty.NettyStream.allocator:Lio/netty/buffer/ByteBufAllocator;
         8: .line 93
            return
        end local 6 // io.netty.buffer.ByteBufAllocator allocator
        end local 5 // java.lang.Class socketChannelClass
        end local 4 // io.netty.channel.EventLoopGroup workerGroup
        end local 3 // com.mongodb.connection.SslSettings sslSettings
        end local 2 // com.mongodb.connection.SocketSettings settings
        end local 1 // com.mongodb.ServerAddress address
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    9     0                this  Lcom/mongodb/connection/netty/NettyStream;
            0    9     1             address  Lcom/mongodb/ServerAddress;
            0    9     2            settings  Lcom/mongodb/connection/SocketSettings;
            0    9     3         sslSettings  Lcom/mongodb/connection/SslSettings;
            0    9     4         workerGroup  Lio/netty/channel/EventLoopGroup;
            0    9     5  socketChannelClass  Ljava/lang/Class<+Lio/netty/channel/socket/SocketChannel;>;
            0    9     6           allocator  Lio/netty/buffer/ByteBufAllocator;
    Signature: (Lcom/mongodb/ServerAddress;Lcom/mongodb/connection/SocketSettings;Lcom/mongodb/connection/SslSettings;Lio/netty/channel/EventLoopGroup;Ljava/lang/Class<+Lio/netty/channel/socket/SocketChannel;>;Lio/netty/buffer/ByteBufAllocator;)V
    MethodParameters:
                    Name  Flags
      address             final
      settings            final
      sslSettings         final
      workerGroup         final
      socketChannelClass  final
      allocator           final

  public org.bson.ByteBuf getBuffer(int);
    descriptor: (I)Lorg/bson/ByteBuf;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.mongodb.connection.netty.NettyStream this
        start local 1 // int size
         0: .line 97
            new com.mongodb.connection.netty.NettyByteBuf
            dup
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.allocator:Lio/netty/buffer/ByteBufAllocator;
            iload 1 /* size */
            iload 1 /* size */
            invokeinterface io.netty.buffer.ByteBufAllocator.buffer:(II)Lio/netty/buffer/ByteBuf;
            invokespecial com.mongodb.connection.netty.NettyByteBuf.<init>:(Lio/netty/buffer/ByteBuf;)V
            areturn
        end local 1 // int size
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/connection/netty/NettyStream;
            0    1     1  size  I
    MethodParameters:
      Name  Flags
      size  final

  public void open();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.mongodb.connection.netty.NettyStream this
         0: .line 102
            new com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler
            dup
            invokespecial com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler.<init>:()V
            astore 1 /* handler */
        start local 1 // com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler handler
         1: .line 103
            aload 0 /* this */
            aload 1 /* handler */
            invokevirtual com.mongodb.connection.netty.NettyStream.openAsync:(Lcom/mongodb/connection/AsyncCompletionHandler;)V
         2: .line 104
            aload 1 /* handler */
            invokevirtual com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler.get:()Ljava/lang/Object;
            pop
         3: .line 105
            return
        end local 1 // com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler handler
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lcom/mongodb/connection/netty/NettyStream;
            1    4     1  handler  Lcom/mongodb/connection/netty/NettyStream$FutureAsyncCompletionHandler<Ljava/lang/Void;>;
    Exceptions:
      throws java.io.IOException

  public void openAsync(com.mongodb.connection.AsyncCompletionHandler<java.lang.Void>);
    descriptor: (Lcom/mongodb/connection/AsyncCompletionHandler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.mongodb.connection.netty.NettyStream this
        start local 1 // com.mongodb.connection.AsyncCompletionHandler handler
         0: .line 109
            aload 0 /* this */
            aload 1 /* handler */
            new java.util.LinkedList
            dup
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.address:Lcom/mongodb/ServerAddress;
            invokevirtual com.mongodb.ServerAddress.getSocketAddresses:()Ljava/util/List;
            invokespecial java.util.LinkedList.<init>:(Ljava/util/Collection;)V
            invokevirtual com.mongodb.connection.netty.NettyStream.initializeChannel:(Lcom/mongodb/connection/AsyncCompletionHandler;Ljava/util/Queue;)V
         1: .line 110
            return
        end local 1 // com.mongodb.connection.AsyncCompletionHandler handler
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/mongodb/connection/netty/NettyStream;
            0    2     1  handler  Lcom/mongodb/connection/AsyncCompletionHandler<Ljava/lang/Void;>;
    Signature: (Lcom/mongodb/connection/AsyncCompletionHandler<Ljava/lang/Void;>;)V
    MethodParameters:
         Name  Flags
      handler  final

  private void initializeChannel(com.mongodb.connection.AsyncCompletionHandler<java.lang.Void>, java.util.Queue<java.net.SocketAddress>);
    descriptor: (Lcom/mongodb/connection/AsyncCompletionHandler;Ljava/util/Queue;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=6, args_size=3
        start local 0 // com.mongodb.connection.netty.NettyStream this
        start local 1 // com.mongodb.connection.AsyncCompletionHandler handler
        start local 2 // java.util.Queue socketAddressQueue
         0: .line 114
            aload 2 /* socketAddressQueue */
            invokeinterface java.util.Queue.isEmpty:()Z
            ifeq 3
         1: .line 115
            aload 1 /* handler */
            new com.mongodb.MongoSocketException
            dup
            ldc "Exception opening socket"
            aload 0 /* this */
            invokevirtual com.mongodb.connection.netty.NettyStream.getAddress:()Lcom/mongodb/ServerAddress;
            invokespecial com.mongodb.MongoSocketException.<init>:(Ljava/lang/String;Lcom/mongodb/ServerAddress;)V
            invokeinterface com.mongodb.connection.AsyncCompletionHandler.failed:(Ljava/lang/Throwable;)V
         2: .line 116
            goto 18
         3: .line 117
      StackMap locals:
      StackMap stack:
            aload 2 /* socketAddressQueue */
            invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
            checkcast java.net.SocketAddress
            astore 3 /* nextAddress */
        start local 3 // java.net.SocketAddress nextAddress
         4: .line 119
            new io.netty.bootstrap.Bootstrap
            dup
            invokespecial io.netty.bootstrap.Bootstrap.<init>:()V
            astore 4 /* bootstrap */
        start local 4 // io.netty.bootstrap.Bootstrap bootstrap
         5: .line 120
            aload 4 /* bootstrap */
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.workerGroup:Lio/netty/channel/EventLoopGroup;
            invokevirtual io.netty.bootstrap.Bootstrap.group:(Lio/netty/channel/EventLoopGroup;)Lio/netty/bootstrap/AbstractBootstrap;
            pop
         6: .line 121
            aload 4 /* bootstrap */
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.socketChannelClass:Ljava/lang/Class;
            invokevirtual io.netty.bootstrap.Bootstrap.channel:(Ljava/lang/Class;)Lio/netty/bootstrap/AbstractBootstrap;
            pop
         7: .line 123
            aload 4 /* bootstrap */
            getstatic io.netty.channel.ChannelOption.CONNECT_TIMEOUT_MILLIS:Lio/netty/channel/ChannelOption;
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.settings:Lcom/mongodb/connection/SocketSettings;
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.connection.SocketSettings.getConnectTimeout:(Ljava/util/concurrent/TimeUnit;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual io.netty.bootstrap.Bootstrap.option:(Lio/netty/channel/ChannelOption;Ljava/lang/Object;)Lio/netty/bootstrap/AbstractBootstrap;
            pop
         8: .line 124
            aload 4 /* bootstrap */
            getstatic io.netty.channel.ChannelOption.TCP_NODELAY:Lio/netty/channel/ChannelOption;
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual io.netty.bootstrap.Bootstrap.option:(Lio/netty/channel/ChannelOption;Ljava/lang/Object;)Lio/netty/bootstrap/AbstractBootstrap;
            pop
         9: .line 125
            aload 4 /* bootstrap */
            getstatic io.netty.channel.ChannelOption.SO_KEEPALIVE:Lio/netty/channel/ChannelOption;
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.settings:Lcom/mongodb/connection/SocketSettings;
            invokevirtual com.mongodb.connection.SocketSettings.isKeepAlive:()Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual io.netty.bootstrap.Bootstrap.option:(Lio/netty/channel/ChannelOption;Ljava/lang/Object;)Lio/netty/bootstrap/AbstractBootstrap;
            pop
        10: .line 127
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.settings:Lcom/mongodb/connection/SocketSettings;
            invokevirtual com.mongodb.connection.SocketSettings.getReceiveBufferSize:()I
            ifle 12
        11: .line 128
            aload 4 /* bootstrap */
            getstatic io.netty.channel.ChannelOption.SO_RCVBUF:Lio/netty/channel/ChannelOption;
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.settings:Lcom/mongodb/connection/SocketSettings;
            invokevirtual com.mongodb.connection.SocketSettings.getReceiveBufferSize:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual io.netty.bootstrap.Bootstrap.option:(Lio/netty/channel/ChannelOption;Ljava/lang/Object;)Lio/netty/bootstrap/AbstractBootstrap;
            pop
        12: .line 130
      StackMap locals: java.net.SocketAddress io.netty.bootstrap.Bootstrap
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.settings:Lcom/mongodb/connection/SocketSettings;
            invokevirtual com.mongodb.connection.SocketSettings.getSendBufferSize:()I
            ifle 14
        13: .line 131
            aload 4 /* bootstrap */
            getstatic io.netty.channel.ChannelOption.SO_SNDBUF:Lio/netty/channel/ChannelOption;
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.settings:Lcom/mongodb/connection/SocketSettings;
            invokevirtual com.mongodb.connection.SocketSettings.getSendBufferSize:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual io.netty.bootstrap.Bootstrap.option:(Lio/netty/channel/ChannelOption;Ljava/lang/Object;)Lio/netty/bootstrap/AbstractBootstrap;
            pop
        14: .line 133
      StackMap locals:
      StackMap stack:
            aload 4 /* bootstrap */
            getstatic io.netty.channel.ChannelOption.ALLOCATOR:Lio/netty/channel/ChannelOption;
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.allocator:Lio/netty/buffer/ByteBufAllocator;
            invokevirtual io.netty.bootstrap.Bootstrap.option:(Lio/netty/channel/ChannelOption;Ljava/lang/Object;)Lio/netty/bootstrap/AbstractBootstrap;
            pop
        15: .line 135
            aload 4 /* bootstrap */
            new com.mongodb.connection.netty.NettyStream$1
            dup
            aload 0 /* this */
            invokespecial com.mongodb.connection.netty.NettyStream$1.<init>:(Lcom/mongodb/connection/netty/NettyStream;)V
            invokevirtual io.netty.bootstrap.Bootstrap.handler:(Lio/netty/channel/ChannelHandler;)Lio/netty/bootstrap/AbstractBootstrap;
            pop
        16: .line 156
            aload 4 /* bootstrap */
            aload 3 /* nextAddress */
            invokevirtual io.netty.bootstrap.Bootstrap.connect:(Ljava/net/SocketAddress;)Lio/netty/channel/ChannelFuture;
            astore 5 /* channelFuture */
        start local 5 // io.netty.channel.ChannelFuture channelFuture
        17: .line 157
            aload 5 /* channelFuture */
            new com.mongodb.connection.netty.NettyStream$OpenChannelFutureListener
            dup
            aload 0 /* this */
            aload 2 /* socketAddressQueue */
            aload 5 /* channelFuture */
            aload 1 /* handler */
            invokespecial com.mongodb.connection.netty.NettyStream$OpenChannelFutureListener.<init>:(Lcom/mongodb/connection/netty/NettyStream;Ljava/util/Queue;Lio/netty/channel/ChannelFuture;Lcom/mongodb/connection/AsyncCompletionHandler;)V
            invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
            pop
        end local 5 // io.netty.channel.ChannelFuture channelFuture
        end local 4 // io.netty.bootstrap.Bootstrap bootstrap
        end local 3 // java.net.SocketAddress nextAddress
        18: .line 159
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.util.Queue socketAddressQueue
        end local 1 // com.mongodb.connection.AsyncCompletionHandler handler
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   19     0                this  Lcom/mongodb/connection/netty/NettyStream;
            0   19     1             handler  Lcom/mongodb/connection/AsyncCompletionHandler<Ljava/lang/Void;>;
            0   19     2  socketAddressQueue  Ljava/util/Queue<Ljava/net/SocketAddress;>;
            4   18     3         nextAddress  Ljava/net/SocketAddress;
            5   18     4           bootstrap  Lio/netty/bootstrap/Bootstrap;
           17   18     5       channelFuture  Lio/netty/channel/ChannelFuture;
    Signature: (Lcom/mongodb/connection/AsyncCompletionHandler<Ljava/lang/Void;>;Ljava/util/Queue<Ljava/net/SocketAddress;>;)V
    MethodParameters:
                    Name  Flags
      handler             final
      socketAddressQueue  final

  public void write(java.util.List<org.bson.ByteBuf>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.mongodb.connection.netty.NettyStream this
        start local 1 // java.util.List buffers
         0: .line 163
            new com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler
            dup
            invokespecial com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler.<init>:()V
            astore 2 /* future */
        start local 2 // com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler future
         1: .line 164
            aload 0 /* this */
            aload 1 /* buffers */
            aload 2 /* future */
            invokevirtual com.mongodb.connection.netty.NettyStream.writeAsync:(Ljava/util/List;Lcom/mongodb/connection/AsyncCompletionHandler;)V
         2: .line 165
            aload 2 /* future */
            invokevirtual com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler.get:()Ljava/lang/Object;
            pop
         3: .line 166
            return
        end local 2 // com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler future
        end local 1 // java.util.List buffers
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lcom/mongodb/connection/netty/NettyStream;
            0    4     1  buffers  Ljava/util/List<Lorg/bson/ByteBuf;>;
            1    4     2   future  Lcom/mongodb/connection/netty/NettyStream$FutureAsyncCompletionHandler<Ljava/lang/Void;>;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/util/List<Lorg/bson/ByteBuf;>;)V
    MethodParameters:
         Name  Flags
      buffers  final

  public org.bson.ByteBuf read(int);
    descriptor: (I)Lorg/bson/ByteBuf;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.mongodb.connection.netty.NettyStream this
        start local 1 // int numBytes
         0: .line 170
            new com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler
            dup
            invokespecial com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler.<init>:()V
            astore 2 /* future */
        start local 2 // com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler future
         1: .line 171
            aload 0 /* this */
            iload 1 /* numBytes */
            aload 2 /* future */
            invokevirtual com.mongodb.connection.netty.NettyStream.readAsync:(ILcom/mongodb/connection/AsyncCompletionHandler;)V
         2: .line 172
            aload 2 /* future */
            invokevirtual com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler.get:()Ljava/lang/Object;
            checkcast org.bson.ByteBuf
            areturn
        end local 2 // com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler future
        end local 1 // int numBytes
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/mongodb/connection/netty/NettyStream;
            0    3     1  numBytes  I
            1    3     2    future  Lcom/mongodb/connection/netty/NettyStream$FutureAsyncCompletionHandler<Lorg/bson/ByteBuf;>;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      numBytes  final

  public void writeAsync(java.util.List<org.bson.ByteBuf>, com.mongodb.connection.AsyncCompletionHandler<java.lang.Void>);
    descriptor: (Ljava/util/List;Lcom/mongodb/connection/AsyncCompletionHandler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // com.mongodb.connection.netty.NettyStream this
        start local 1 // java.util.List buffers
        start local 2 // com.mongodb.connection.AsyncCompletionHandler handler
         0: .line 177
            getstatic io.netty.buffer.PooledByteBufAllocator.DEFAULT:Lio/netty/buffer/PooledByteBufAllocator;
            invokevirtual io.netty.buffer.PooledByteBufAllocator.compositeBuffer:()Lio/netty/buffer/CompositeByteBuf;
            astore 3 /* composite */
        start local 3 // io.netty.buffer.CompositeByteBuf composite
         1: .line 178
            aload 1 /* buffers */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 4
      StackMap locals: com.mongodb.connection.netty.NettyStream java.util.List com.mongodb.connection.AsyncCompletionHandler io.netty.buffer.CompositeByteBuf top java.util.Iterator
      StackMap stack:
         2: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.bson.ByteBuf
            astore 4 /* cur */
        start local 4 // org.bson.ByteBuf cur
         3: .line 179
            aload 3 /* composite */
            iconst_1
            aload 4 /* cur */
            checkcast com.mongodb.connection.netty.NettyByteBuf
            invokevirtual com.mongodb.connection.netty.NettyByteBuf.asByteBuf:()Lio/netty/buffer/ByteBuf;
            invokevirtual io.netty.buffer.CompositeByteBuf.addComponent:(ZLio/netty/buffer/ByteBuf;)Lio/netty/buffer/CompositeByteBuf;
            pop
        end local 4 // org.bson.ByteBuf cur
         4: .line 178
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 182
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.channel:Lio/netty/channel/Channel;
            aload 3 /* composite */
            invokeinterface io.netty.channel.Channel.writeAndFlush:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
            new com.mongodb.connection.netty.NettyStream$2
            dup
            aload 0 /* this */
            aload 2 /* handler */
            invokespecial com.mongodb.connection.netty.NettyStream$2.<init>:(Lcom/mongodb/connection/netty/NettyStream;Lcom/mongodb/connection/AsyncCompletionHandler;)V
            invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
            pop
         6: .line 192
            return
        end local 3 // io.netty.buffer.CompositeByteBuf composite
        end local 2 // com.mongodb.connection.AsyncCompletionHandler handler
        end local 1 // java.util.List buffers
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lcom/mongodb/connection/netty/NettyStream;
            0    7     1    buffers  Ljava/util/List<Lorg/bson/ByteBuf;>;
            0    7     2    handler  Lcom/mongodb/connection/AsyncCompletionHandler<Ljava/lang/Void;>;
            1    7     3  composite  Lio/netty/buffer/CompositeByteBuf;
            3    4     4        cur  Lorg/bson/ByteBuf;
    Signature: (Ljava/util/List<Lorg/bson/ByteBuf;>;Lcom/mongodb/connection/AsyncCompletionHandler<Ljava/lang/Void;>;)V
    MethodParameters:
         Name  Flags
      buffers  final
      handler  final

  public void readAsync(int, com.mongodb.connection.AsyncCompletionHandler<org.bson.ByteBuf>);
    descriptor: (ILcom/mongodb/connection/AsyncCompletionHandler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=11, args_size=3
        start local 0 // com.mongodb.connection.netty.NettyStream this
        start local 1 // int numBytes
        start local 2 // com.mongodb.connection.AsyncCompletionHandler handler
         0: .line 196
            aload 0 /* this */
            invokevirtual com.mongodb.connection.netty.NettyStream.scheduleReadTimeout:()V
         1: .line 197
            aconst_null
            astore 3 /* buffer */
        start local 3 // org.bson.ByteBuf buffer
         2: .line 198
            aconst_null
            astore 4 /* exceptionResult */
        start local 4 // java.lang.Throwable exceptionResult
         3: .line 199
            aload 0 /* this */
            dup
            astore 5
            monitorenter
         4: .line 200
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.pendingException:Ljava/lang/Throwable;
            astore 4 /* exceptionResult */
         5: .line 201
            aload 4 /* exceptionResult */
            ifnonnull 27
         6: .line 202
            aload 0 /* this */
            iload 1 /* numBytes */
            invokevirtual com.mongodb.connection.netty.NettyStream.hasBytesAvailable:(I)Z
            ifne 9
         7: .line 203
            aload 0 /* this */
            new com.mongodb.connection.netty.NettyStream$PendingReader
            dup
            iload 1 /* numBytes */
            aload 2 /* handler */
            invokespecial com.mongodb.connection.netty.NettyStream$PendingReader.<init>:(ILcom/mongodb/connection/AsyncCompletionHandler;)V
            putfield com.mongodb.connection.netty.NettyStream.pendingReader:Lcom/mongodb/connection/netty/NettyStream$PendingReader;
         8: .line 204
            goto 27
         9: .line 205
      StackMap locals: org.bson.ByteBuf java.lang.Throwable com.mongodb.connection.netty.NettyStream
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.allocator:Lio/netty/buffer/ByteBufAllocator;
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.pendingInboundBuffers:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.size:()I
            invokeinterface io.netty.buffer.ByteBufAllocator.compositeBuffer:(I)Lio/netty/buffer/CompositeByteBuf;
            astore 6 /* composite */
        start local 6 // io.netty.buffer.CompositeByteBuf composite
        10: .line 206
            iload 1 /* numBytes */
            istore 7 /* bytesNeeded */
        start local 7 // int bytesNeeded
        11: .line 207
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.pendingInboundBuffers:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
            astore 8 /* iter */
        start local 8 // java.util.Iterator iter
        12: goto 25
        13: .line 208
      StackMap locals: io.netty.buffer.CompositeByteBuf int java.util.Iterator
      StackMap stack:
            aload 8 /* iter */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.netty.buffer.ByteBuf
            astore 9 /* next */
        start local 9 // io.netty.buffer.ByteBuf next
        14: .line 209
            aload 9 /* next */
            invokevirtual io.netty.buffer.ByteBuf.readableBytes:()I
            iload 7 /* bytesNeeded */
            invokestatic java.lang.Math.min:(II)I
            istore 10 /* bytesNeededFromCurrentBuffer */
        start local 10 // int bytesNeededFromCurrentBuffer
        15: .line 210
            iload 10 /* bytesNeededFromCurrentBuffer */
            aload 9 /* next */
            invokevirtual io.netty.buffer.ByteBuf.readableBytes:()I
            if_icmpne 19
        16: .line 211
            aload 6 /* composite */
            aload 9 /* next */
            invokevirtual io.netty.buffer.CompositeByteBuf.addComponent:(Lio/netty/buffer/ByteBuf;)Lio/netty/buffer/CompositeByteBuf;
            pop
        17: .line 212
            aload 8 /* iter */
            invokeinterface java.util.Iterator.remove:()V
        18: .line 213
            goto 21
        19: .line 214
      StackMap locals: io.netty.buffer.ByteBuf int
      StackMap stack:
            aload 9 /* next */
            invokevirtual io.netty.buffer.ByteBuf.retain:()Lio/netty/buffer/ByteBuf;
            pop
        20: .line 215
            aload 6 /* composite */
            aload 9 /* next */
            iload 10 /* bytesNeededFromCurrentBuffer */
            invokevirtual io.netty.buffer.ByteBuf.readSlice:(I)Lio/netty/buffer/ByteBuf;
            invokevirtual io.netty.buffer.CompositeByteBuf.addComponent:(Lio/netty/buffer/ByteBuf;)Lio/netty/buffer/CompositeByteBuf;
            pop
        21: .line 217
      StackMap locals:
      StackMap stack:
            aload 6 /* composite */
            aload 6 /* composite */
            invokevirtual io.netty.buffer.CompositeByteBuf.writerIndex:()I
            iload 10 /* bytesNeededFromCurrentBuffer */
            iadd
            invokevirtual io.netty.buffer.CompositeByteBuf.writerIndex:(I)Lio/netty/buffer/CompositeByteBuf;
            pop
        22: .line 218
            iload 7 /* bytesNeeded */
            iload 10 /* bytesNeededFromCurrentBuffer */
            isub
            istore 7 /* bytesNeeded */
        23: .line 219
            iload 7 /* bytesNeeded */
            ifne 25
        24: .line 220
            goto 26
        end local 10 // int bytesNeededFromCurrentBuffer
        end local 9 // io.netty.buffer.ByteBuf next
        25: .line 207
      StackMap locals:
      StackMap stack:
            aload 8 /* iter */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        end local 8 // java.util.Iterator iter
        26: .line 223
      StackMap locals:
      StackMap stack:
            new com.mongodb.connection.netty.NettyByteBuf
            dup
            aload 6 /* composite */
            invokespecial com.mongodb.connection.netty.NettyByteBuf.<init>:(Lio/netty/buffer/ByteBuf;)V
            invokevirtual com.mongodb.connection.netty.NettyByteBuf.flip:()Lorg/bson/ByteBuf;
            astore 3 /* buffer */
        end local 7 // int bytesNeeded
        end local 6 // io.netty.buffer.CompositeByteBuf composite
        27: .line 199
      StackMap locals:
      StackMap stack:
            aload 5
            monitorexit
        28: goto 31
      StackMap locals:
      StackMap stack: java.lang.Throwable
        29: aload 5
            monitorexit
        30: athrow
        31: .line 227
      StackMap locals:
      StackMap stack:
            aload 4 /* exceptionResult */
            ifnull 34
        32: .line 228
            aload 0 /* this */
            invokevirtual com.mongodb.connection.netty.NettyStream.disableReadTimeout:()V
        33: .line 229
            aload 2 /* handler */
            aload 4 /* exceptionResult */
            invokeinterface com.mongodb.connection.AsyncCompletionHandler.failed:(Ljava/lang/Throwable;)V
        34: .line 231
      StackMap locals:
      StackMap stack:
            aload 3 /* buffer */
            ifnull 37
        35: .line 232
            aload 0 /* this */
            invokevirtual com.mongodb.connection.netty.NettyStream.disableReadTimeout:()V
        36: .line 233
            aload 2 /* handler */
            aload 3 /* buffer */
            invokeinterface com.mongodb.connection.AsyncCompletionHandler.completed:(Ljava/lang/Object;)V
        37: .line 235
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.lang.Throwable exceptionResult
        end local 3 // org.bson.ByteBuf buffer
        end local 2 // com.mongodb.connection.AsyncCompletionHandler handler
        end local 1 // int numBytes
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0   38     0                          this  Lcom/mongodb/connection/netty/NettyStream;
            0   38     1                      numBytes  I
            0   38     2                       handler  Lcom/mongodb/connection/AsyncCompletionHandler<Lorg/bson/ByteBuf;>;
            2   38     3                        buffer  Lorg/bson/ByteBuf;
            3   38     4               exceptionResult  Ljava/lang/Throwable;
           10   27     6                     composite  Lio/netty/buffer/CompositeByteBuf;
           11   27     7                   bytesNeeded  I
           12   26     8                          iter  Ljava/util/Iterator<Lio/netty/buffer/ByteBuf;>;
           14   25     9                          next  Lio/netty/buffer/ByteBuf;
           15   25    10  bytesNeededFromCurrentBuffer  I
      Exception table:
        from    to  target  type
           4    28      29  any
          29    30      29  any
    Signature: (ILcom/mongodb/connection/AsyncCompletionHandler<Lorg/bson/ByteBuf;>;)V
    MethodParameters:
          Name  Flags
      numBytes  final
      handler   final

  private boolean hasBytesAvailable(int);
    descriptor: (I)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // com.mongodb.connection.netty.NettyStream this
        start local 1 // int numBytes
         0: .line 238
            iconst_0
            istore 2 /* bytesAvailable */
        start local 2 // int bytesAvailable
         1: .line 239
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.pendingInboundBuffers:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
            astore 4
            goto 6
      StackMap locals: com.mongodb.connection.netty.NettyStream int int top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.netty.buffer.ByteBuf
            astore 3 /* cur */
        start local 3 // io.netty.buffer.ByteBuf cur
         3: .line 240
            iload 2 /* bytesAvailable */
            aload 3 /* cur */
            invokevirtual io.netty.buffer.ByteBuf.readableBytes:()I
            iadd
            istore 2 /* bytesAvailable */
         4: .line 241
            iload 2 /* bytesAvailable */
            iload 1 /* numBytes */
            if_icmplt 6
         5: .line 242
            iconst_1
            ireturn
        end local 3 // io.netty.buffer.ByteBuf cur
         6: .line 239
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         7: .line 245
            iconst_0
            ireturn
        end local 2 // int bytesAvailable
        end local 1 // int numBytes
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Lcom/mongodb/connection/netty/NettyStream;
            0    8     1        numBytes  I
            1    8     2  bytesAvailable  I
            3    6     3             cur  Lio/netty/buffer/ByteBuf;
    MethodParameters:
          Name  Flags
      numBytes  final

  private void handleReadResponse(io.netty.buffer.ByteBuf, java.lang.Throwable);
    descriptor: (Lio/netty/buffer/ByteBuf;Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // com.mongodb.connection.netty.NettyStream this
        start local 1 // io.netty.buffer.ByteBuf buffer
        start local 2 // java.lang.Throwable t
         0: .line 249
            aconst_null
            astore 3 /* localPendingReader */
        start local 3 // com.mongodb.connection.netty.NettyStream$PendingReader localPendingReader
         1: .line 250
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         2: .line 251
            aload 1 /* buffer */
            ifnull 5
         3: .line 252
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.pendingInboundBuffers:Ljava/util/LinkedList;
            aload 1 /* buffer */
            invokevirtual io.netty.buffer.ByteBuf.retain:()Lio/netty/buffer/ByteBuf;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
         4: .line 253
            goto 6
         5: .line 254
      StackMap locals: com.mongodb.connection.netty.NettyStream$PendingReader com.mongodb.connection.netty.NettyStream
      StackMap stack:
            aload 0 /* this */
            aload 2 /* t */
            putfield com.mongodb.connection.netty.NettyStream.pendingException:Ljava/lang/Throwable;
         6: .line 256
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.pendingReader:Lcom/mongodb/connection/netty/NettyStream$PendingReader;
            ifnull 9
         7: .line 257
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.pendingReader:Lcom/mongodb/connection/netty/NettyStream$PendingReader;
            astore 3 /* localPendingReader */
         8: .line 258
            aload 0 /* this */
            aconst_null
            putfield com.mongodb.connection.netty.NettyStream.pendingReader:Lcom/mongodb/connection/netty/NettyStream$PendingReader;
         9: .line 250
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        10: goto 13
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: aload 4
            monitorexit
        12: athrow
        13: .line 262
      StackMap locals:
      StackMap stack:
            aload 3 /* localPendingReader */
            ifnull 15
        14: .line 263
            aload 0 /* this */
            aload 3 /* localPendingReader */
            getfield com.mongodb.connection.netty.NettyStream$PendingReader.numBytes:I
            aload 3 /* localPendingReader */
            getfield com.mongodb.connection.netty.NettyStream$PendingReader.handler:Lcom/mongodb/connection/AsyncCompletionHandler;
            invokevirtual com.mongodb.connection.netty.NettyStream.readAsync:(ILcom/mongodb/connection/AsyncCompletionHandler;)V
        15: .line 265
      StackMap locals:
      StackMap stack:
            return
        end local 3 // com.mongodb.connection.netty.NettyStream$PendingReader localPendingReader
        end local 2 // java.lang.Throwable t
        end local 1 // io.netty.buffer.ByteBuf buffer
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   16     0                this  Lcom/mongodb/connection/netty/NettyStream;
            0   16     1              buffer  Lio/netty/buffer/ByteBuf;
            0   16     2                   t  Ljava/lang/Throwable;
            1   16     3  localPendingReader  Lcom/mongodb/connection/netty/NettyStream$PendingReader;
      Exception table:
        from    to  target  type
           2    10      11  any
          11    12      11  any
    MethodParameters:
        Name  Flags
      buffer  final
      t       final

  public com.mongodb.ServerAddress getAddress();
    descriptor: ()Lcom/mongodb/ServerAddress;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.connection.netty.NettyStream this
         0: .line 269
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.address:Lcom/mongodb/ServerAddress;
            areturn
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/connection/netty/NettyStream;

  public synchronized void close();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // com.mongodb.connection.netty.NettyStream this
         0: .line 274
            aload 0 /* this */
            iconst_1
            putfield com.mongodb.connection.netty.NettyStream.isClosed:Z
         1: .line 275
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.channel:Lio/netty/channel/Channel;
            ifnull 4
         2: .line 276
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.channel:Lio/netty/channel/Channel;
            invokeinterface io.netty.channel.Channel.close:()Lio/netty/channel/ChannelFuture;
            pop
         3: .line 277
            aload 0 /* this */
            aconst_null
            putfield com.mongodb.connection.netty.NettyStream.channel:Lio/netty/channel/Channel;
         4: .line 279
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.pendingInboundBuffers:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
            astore 1 /* iterator */
        start local 1 // java.util.Iterator iterator
         5: goto 9
         6: .line 280
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 1 /* iterator */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.netty.buffer.ByteBuf
            astore 2 /* nextByteBuf */
        start local 2 // io.netty.buffer.ByteBuf nextByteBuf
         7: .line 281
            aload 1 /* iterator */
            invokeinterface java.util.Iterator.remove:()V
         8: .line 282
            aload 2 /* nextByteBuf */
            invokevirtual io.netty.buffer.ByteBuf.release:()Z
            pop
        end local 2 // io.netty.buffer.ByteBuf nextByteBuf
         9: .line 279
      StackMap locals:
      StackMap stack:
            aload 1 /* iterator */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        end local 1 // java.util.Iterator iterator
        10: .line 284
            return
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   11     0         this  Lcom/mongodb/connection/netty/NettyStream;
            5   10     1     iterator  Ljava/util/Iterator<Lio/netty/buffer/ByteBuf;>;
            7    9     2  nextByteBuf  Lio/netty/buffer/ByteBuf;

  public boolean isClosed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.connection.netty.NettyStream this
         0: .line 288
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.isClosed:Z
            ireturn
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/connection/netty/NettyStream;

  public com.mongodb.connection.SocketSettings getSettings();
    descriptor: ()Lcom/mongodb/connection/SocketSettings;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.connection.netty.NettyStream this
         0: .line 292
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.settings:Lcom/mongodb/connection/SocketSettings;
            areturn
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/connection/netty/NettyStream;

  public com.mongodb.connection.SslSettings getSslSettings();
    descriptor: ()Lcom/mongodb/connection/SslSettings;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.connection.netty.NettyStream this
         0: .line 296
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.sslSettings:Lcom/mongodb/connection/SslSettings;
            areturn
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/connection/netty/NettyStream;

  public io.netty.channel.EventLoopGroup getWorkerGroup();
    descriptor: ()Lio/netty/channel/EventLoopGroup;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.connection.netty.NettyStream this
         0: .line 300
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.workerGroup:Lio/netty/channel/EventLoopGroup;
            areturn
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/connection/netty/NettyStream;

  public java.lang.Class<? extends io.netty.channel.socket.SocketChannel> getSocketChannelClass();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.connection.netty.NettyStream this
         0: .line 304
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.socketChannelClass:Ljava/lang/Class;
            areturn
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/connection/netty/NettyStream;
    Signature: ()Ljava/lang/Class<+Lio/netty/channel/socket/SocketChannel;>;

  public io.netty.buffer.ByteBufAllocator getAllocator();
    descriptor: ()Lio/netty/buffer/ByteBufAllocator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.connection.netty.NettyStream this
         0: .line 308
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.allocator:Lio/netty/buffer/ByteBufAllocator;
            areturn
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/connection/netty/NettyStream;

  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.netty.NettyStream this
         0: .line 313
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.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.netty.NettyStream.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 314
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 1 /* e */
        start local 1 // java.security.NoSuchAlgorithmException e
         4: .line 315
            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.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/mongodb/connection/netty/NettyStream;
            4    5     1     e  Ljava/security/NoSuchAlgorithmException;
      Exception table:
        from    to  target  type
           0     2       3  Class java.security.NoSuchAlgorithmException

  private void scheduleReadTimeout();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.connection.netty.NettyStream this
         0: .line 427
            aload 0 /* this */
            iconst_0
            invokevirtual com.mongodb.connection.netty.NettyStream.adjustTimeout:(Z)V
         1: .line 428
            return
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/connection/netty/NettyStream;

  private void disableReadTimeout();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.connection.netty.NettyStream this
         0: .line 431
            aload 0 /* this */
            iconst_1
            invokevirtual com.mongodb.connection.netty.NettyStream.adjustTimeout:(Z)V
         1: .line 432
            return
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/connection/netty/NettyStream;

  private void adjustTimeout(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=2
        start local 0 // com.mongodb.connection.netty.NettyStream this
        start local 1 // boolean disable
         0: .line 435
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.channel:Lio/netty/channel/Channel;
            invokeinterface io.netty.channel.Channel.pipeline:()Lio/netty/channel/ChannelPipeline;
            ldc "ReadTimeoutHandler"
            invokeinterface io.netty.channel.ChannelPipeline.get:(Ljava/lang/String;)Lio/netty/channel/ChannelHandler;
            astore 2 /* timeoutHandler */
        start local 2 // io.netty.channel.ChannelHandler timeoutHandler
         1: .line 436
            aload 2 /* timeoutHandler */
            ifnull 15
         2: .line 437
            aload 2 /* timeoutHandler */
            checkcast com.mongodb.connection.netty.ReadTimeoutHandler
            astore 3 /* readTimeoutHandler */
        start local 3 // com.mongodb.connection.netty.ReadTimeoutHandler readTimeoutHandler
         3: .line 438
            aload 0 /* this */
            getfield com.mongodb.connection.netty.NettyStream.channel:Lio/netty/channel/Channel;
            invokeinterface io.netty.channel.Channel.pipeline:()Lio/netty/channel/ChannelPipeline;
            aload 2 /* timeoutHandler */
            invokeinterface io.netty.channel.ChannelPipeline.context:(Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelHandlerContext;
            astore 4 /* handlerContext */
        start local 4 // io.netty.channel.ChannelHandlerContext handlerContext
         4: .line 439
            aload 4 /* handlerContext */
            invokeinterface io.netty.channel.ChannelHandlerContext.executor:()Lio/netty/util/concurrent/EventExecutor;
            astore 5 /* executor */
        start local 5 // io.netty.util.concurrent.EventExecutor executor
         5: .line 441
            iload 1 /* disable */
            ifeq 11
         6: .line 442
            aload 5 /* executor */
            invokeinterface io.netty.util.concurrent.EventExecutor.inEventLoop:()Z
            ifeq 9
         7: .line 443
            aload 3 /* readTimeoutHandler */
            aload 4 /* handlerContext */
            invokevirtual com.mongodb.connection.netty.ReadTimeoutHandler.removeTimeout:(Lio/netty/channel/ChannelHandlerContext;)V
         8: .line 444
            goto 15
         9: .line 445
      StackMap locals: com.mongodb.connection.netty.NettyStream int io.netty.channel.ChannelHandler com.mongodb.connection.netty.ReadTimeoutHandler io.netty.channel.ChannelHandlerContext io.netty.util.concurrent.EventExecutor
      StackMap stack:
            aload 5 /* executor */
            new com.mongodb.connection.netty.NettyStream$3
            dup
            aload 0 /* this */
            aload 3 /* readTimeoutHandler */
            aload 4 /* handlerContext */
            invokespecial com.mongodb.connection.netty.NettyStream$3.<init>:(Lcom/mongodb/connection/netty/NettyStream;Lcom/mongodb/connection/netty/ReadTimeoutHandler;Lio/netty/channel/ChannelHandlerContext;)V
            invokeinterface io.netty.util.concurrent.EventExecutor.submit:(Ljava/lang/Runnable;)Lio/netty/util/concurrent/Future;
            pop
        10: .line 452
            goto 15
        11: .line 453
      StackMap locals:
      StackMap stack:
            aload 5 /* executor */
            invokeinterface io.netty.util.concurrent.EventExecutor.inEventLoop:()Z
            ifeq 14
        12: .line 454
            aload 3 /* readTimeoutHandler */
            aload 4 /* handlerContext */
            invokevirtual com.mongodb.connection.netty.ReadTimeoutHandler.scheduleTimeout:(Lio/netty/channel/ChannelHandlerContext;)V
        13: .line 455
            goto 15
        14: .line 456
      StackMap locals:
      StackMap stack:
            aload 5 /* executor */
            new com.mongodb.connection.netty.NettyStream$4
            dup
            aload 0 /* this */
            aload 3 /* readTimeoutHandler */
            aload 4 /* handlerContext */
            invokespecial com.mongodb.connection.netty.NettyStream$4.<init>:(Lcom/mongodb/connection/netty/NettyStream;Lcom/mongodb/connection/netty/ReadTimeoutHandler;Lio/netty/channel/ChannelHandlerContext;)V
            invokeinterface io.netty.util.concurrent.EventExecutor.submit:(Ljava/lang/Runnable;)Lio/netty/util/concurrent/Future;
            pop
        end local 5 // io.netty.util.concurrent.EventExecutor executor
        end local 4 // io.netty.channel.ChannelHandlerContext handlerContext
        end local 3 // com.mongodb.connection.netty.ReadTimeoutHandler readTimeoutHandler
        15: .line 465
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.netty.channel.ChannelHandler timeoutHandler
        end local 1 // boolean disable
        end local 0 // com.mongodb.connection.netty.NettyStream this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   16     0                this  Lcom/mongodb/connection/netty/NettyStream;
            0   16     1             disable  Z
            1   16     2      timeoutHandler  Lio/netty/channel/ChannelHandler;
            3   15     3  readTimeoutHandler  Lcom/mongodb/connection/netty/ReadTimeoutHandler;
            4   15     4      handlerContext  Lio/netty/channel/ChannelHandlerContext;
            5   15     5            executor  Lio/netty/util/concurrent/EventExecutor;
    MethodParameters:
         Name  Flags
      disable  final
}
SourceFile: "NettyStream.java"
NestMembers:
  com.mongodb.connection.netty.NettyStream$1  com.mongodb.connection.netty.NettyStream$2  com.mongodb.connection.netty.NettyStream$3  com.mongodb.connection.netty.NettyStream$4  com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler  com.mongodb.connection.netty.NettyStream$InboundBufferHandler  com.mongodb.connection.netty.NettyStream$OpenChannelFutureListener  com.mongodb.connection.netty.NettyStream$OpenChannelFutureListener$1  com.mongodb.connection.netty.NettyStream$PendingReader
InnerClasses:
  com.mongodb.connection.netty.NettyStream$1
  com.mongodb.connection.netty.NettyStream$2
  com.mongodb.connection.netty.NettyStream$3
  com.mongodb.connection.netty.NettyStream$4
  private final FutureAsyncCompletionHandler = com.mongodb.connection.netty.NettyStream$FutureAsyncCompletionHandler of com.mongodb.connection.netty.NettyStream
  private InboundBufferHandler = com.mongodb.connection.netty.NettyStream$InboundBufferHandler of com.mongodb.connection.netty.NettyStream
  private OpenChannelFutureListener = com.mongodb.connection.netty.NettyStream$OpenChannelFutureListener of com.mongodb.connection.netty.NettyStream
  private final PendingReader = com.mongodb.connection.netty.NettyStream$PendingReader of com.mongodb.connection.netty.NettyStream