class com.mongodb.DBDecoderAdapter implements org.bson.codecs.Decoder<com.mongodb.DBObject>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.mongodb.DBDecoderAdapter
  super_class: java.lang.Object
{
  private final com.mongodb.DBDecoder decoder;
    descriptor: Lcom/mongodb/DBDecoder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  void <init>(com.mongodb.DBDecoder, com.mongodb.DBCollection, com.mongodb.connection.BufferProvider);
    descriptor: (Lcom/mongodb/DBDecoder;Lcom/mongodb/DBCollection;Lcom/mongodb/connection/BufferProvider;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.mongodb.DBDecoderAdapter this
        start local 1 // com.mongodb.DBDecoder decoder
        start local 2 // com.mongodb.DBCollection collection
        start local 3 // com.mongodb.connection.BufferProvider bufferProvider
         0: .line 34
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 35
            aload 0 /* this */
            aload 1 /* decoder */
            putfield com.mongodb.DBDecoderAdapter.decoder:Lcom/mongodb/DBDecoder;
         2: .line 36
            aload 0 /* this */
            aload 2 /* collection */
            putfield com.mongodb.DBDecoderAdapter.collection:Lcom/mongodb/DBCollection;
         3: .line 37
            aload 0 /* this */
            aload 3 /* bufferProvider */
            putfield com.mongodb.DBDecoderAdapter.bufferProvider:Lcom/mongodb/connection/BufferProvider;
         4: .line 38
            return
        end local 3 // com.mongodb.connection.BufferProvider bufferProvider
        end local 2 // com.mongodb.DBCollection collection
        end local 1 // com.mongodb.DBDecoder decoder
        end local 0 // com.mongodb.DBDecoderAdapter this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0            this  Lcom/mongodb/DBDecoderAdapter;
            0    5     1         decoder  Lcom/mongodb/DBDecoder;
            0    5     2      collection  Lcom/mongodb/DBCollection;
            0    5     3  bufferProvider  Lcom/mongodb/connection/BufferProvider;
    MethodParameters:
                Name  Flags
      decoder         final
      collection      final
      bufferProvider  final

  public com.mongodb.DBObject decode(org.bson.BsonReader, org.bson.codecs.DecoderContext);
    descriptor: (Lorg/bson/BsonReader;Lorg/bson/codecs/DecoderContext;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // com.mongodb.DBDecoderAdapter this
        start local 1 // org.bson.BsonReader reader
        start local 2 // org.bson.codecs.DecoderContext decoderContext
         0: .line 42
            new com.mongodb.connection.ByteBufferBsonOutput
            dup
            aload 0 /* this */
            getfield com.mongodb.DBDecoderAdapter.bufferProvider:Lcom/mongodb/connection/BufferProvider;
            invokespecial com.mongodb.connection.ByteBufferBsonOutput.<init>:(Lcom/mongodb/connection/BufferProvider;)V
            astore 3 /* bsonOutput */
        start local 3 // com.mongodb.connection.ByteBufferBsonOutput bsonOutput
         1: .line 43
            new org.bson.BsonBinaryWriter
            dup
            aload 3 /* bsonOutput */
            invokespecial org.bson.BsonBinaryWriter.<init>:(Lorg/bson/io/BsonOutput;)V
            astore 4 /* binaryWriter */
        start local 4 // org.bson.BsonBinaryWriter binaryWriter
         2: .line 45
            aload 4 /* binaryWriter */
            aload 1 /* reader */
            invokevirtual org.bson.BsonBinaryWriter.pipe:(Lorg/bson/BsonReader;)V
         3: .line 47
            new com.mongodb.DBDecoderAdapter$BufferExposingByteArrayOutputStream
            dup
            aload 4 /* binaryWriter */
            invokevirtual org.bson.BsonBinaryWriter.getBsonOutput:()Lorg/bson/io/BsonOutput;
            invokeinterface org.bson.io.BsonOutput.getSize:()I
            invokespecial com.mongodb.DBDecoderAdapter$BufferExposingByteArrayOutputStream.<init>:(I)V
         4: .line 46
            astore 5 /* byteArrayOutputStream */
        start local 5 // com.mongodb.DBDecoderAdapter$BufferExposingByteArrayOutputStream byteArrayOutputStream
         5: .line 48
            aload 3 /* bsonOutput */
            aload 5 /* byteArrayOutputStream */
            invokevirtual com.mongodb.connection.ByteBufferBsonOutput.pipe:(Ljava/io/OutputStream;)I
            pop
         6: .line 49
            aload 0 /* this */
            getfield com.mongodb.DBDecoderAdapter.decoder:Lcom/mongodb/DBDecoder;
            aload 5 /* byteArrayOutputStream */
            invokevirtual com.mongodb.DBDecoderAdapter$BufferExposingByteArrayOutputStream.getInternalBytes:()[B
            aload 0 /* this */
            getfield com.mongodb.DBDecoderAdapter.collection:Lcom/mongodb/DBCollection;
            invokeinterface com.mongodb.DBDecoder.decode:([BLcom/mongodb/DBCollection;)Lcom/mongodb/DBObject;
            astore 7
         7: .line 54
            aload 4 /* binaryWriter */
            invokevirtual org.bson.BsonBinaryWriter.close:()V
         8: .line 55
            aload 3 /* bsonOutput */
            invokevirtual com.mongodb.connection.ByteBufferBsonOutput.close:()V
         9: .line 49
            aload 7
            areturn
        end local 5 // com.mongodb.DBDecoderAdapter$BufferExposingByteArrayOutputStream byteArrayOutputStream
        10: .line 50
      StackMap locals: com.mongodb.DBDecoderAdapter org.bson.BsonReader org.bson.codecs.DecoderContext com.mongodb.connection.ByteBufferBsonOutput org.bson.BsonBinaryWriter
      StackMap stack: java.io.IOException
            astore 5 /* e */
        start local 5 // java.io.IOException e
        11: .line 52
            new com.mongodb.MongoInternalException
            dup
            ldc "An unlikely IOException thrown."
            aload 5 /* e */
            invokespecial com.mongodb.MongoInternalException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.io.IOException e
        12: .line 53
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6
        13: .line 54
            aload 4 /* binaryWriter */
            invokevirtual org.bson.BsonBinaryWriter.close:()V
        14: .line 55
            aload 3 /* bsonOutput */
            invokevirtual com.mongodb.connection.ByteBufferBsonOutput.close:()V
        15: .line 56
            aload 6
            athrow
        end local 4 // org.bson.BsonBinaryWriter binaryWriter
        end local 3 // com.mongodb.connection.ByteBufferBsonOutput bsonOutput
        end local 2 // org.bson.codecs.DecoderContext decoderContext
        end local 1 // org.bson.BsonReader reader
        end local 0 // com.mongodb.DBDecoderAdapter this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   16     0                   this  Lcom/mongodb/DBDecoderAdapter;
            0   16     1                 reader  Lorg/bson/BsonReader;
            0   16     2         decoderContext  Lorg/bson/codecs/DecoderContext;
            1   16     3             bsonOutput  Lcom/mongodb/connection/ByteBufferBsonOutput;
            2   16     4           binaryWriter  Lorg/bson/BsonBinaryWriter;
            5   10     5  byteArrayOutputStream  Lcom/mongodb/DBDecoderAdapter$BufferExposingByteArrayOutputStream;
           11   12     5                      e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           2     7      10  Class java.io.IOException
           2     7      12  any
          10    12      12  any
    MethodParameters:
                Name  Flags
      reader          final
      decoderContext  final

  public java.lang.Object decode(org.bson.BsonReader, org.bson.codecs.DecoderContext);
    descriptor: (Lorg/bson/BsonReader;Lorg/bson/codecs/DecoderContext;)Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            aload 2
            invokevirtual com.mongodb.DBDecoderAdapter.decode:(Lorg/bson/BsonReader;Lorg/bson/codecs/DecoderContext;)Lcom/mongodb/DBObject;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Ljava/lang/Object;Lorg/bson/codecs/Decoder<Lcom/mongodb/DBObject;>;
SourceFile: "DBDecoderAdapter.java"
NestMembers:
  com.mongodb.DBDecoderAdapter$BufferExposingByteArrayOutputStream
InnerClasses:
  private BufferExposingByteArrayOutputStream = com.mongodb.DBDecoderAdapter$BufferExposingByteArrayOutputStream of com.mongodb.DBDecoderAdapter