public class com.mongodb.DBCollection
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.mongodb.DBCollection
  super_class: java.lang.Object
{
  public static final java.lang.String ID_FIELD_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "_id"

  private final java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final com.mongodb.client.internal.OperationExecutor executor;
    descriptor: Lcom/mongodb/client/internal/OperationExecutor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.mongodb.Bytes$OptionHolder optionHolder;
    descriptor: Lcom/mongodb/Bytes$OptionHolder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean retryWrites;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean retryReads;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile com.mongodb.ReadPreference readPreference;
    descriptor: Lcom/mongodb/ReadPreference;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile com.mongodb.WriteConcern writeConcern;
    descriptor: Lcom/mongodb/WriteConcern;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile com.mongodb.ReadConcern readConcern;
    descriptor: Lcom/mongodb/ReadConcern;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private java.util.List<com.mongodb.DBObject> hintFields;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Lcom/mongodb/DBObject;>;

  private com.mongodb.DBEncoderFactory encoderFactory;
    descriptor: Lcom/mongodb/DBEncoderFactory;
    flags: (0x0002) ACC_PRIVATE

  private com.mongodb.DBDecoderFactory decoderFactory;
    descriptor: Lcom/mongodb/DBDecoderFactory;
    flags: (0x0002) ACC_PRIVATE

  private com.mongodb.DBCollectionObjectFactory objectFactory;
    descriptor: Lcom/mongodb/DBCollectionObjectFactory;
    flags: (0x0002) ACC_PRIVATE

  private volatile com.mongodb.CompoundDBObjectCodec objectCodec;
    descriptor: Lcom/mongodb/CompoundDBObjectCodec;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private static volatile int[] $SWITCH_TABLE$com$mongodb$MapReduceCommand$OutputType;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  void <init>(java.lang.String, com.mongodb.DB, com.mongodb.client.internal.OperationExecutor);
    descriptor: (Ljava/lang/String;Lcom/mongodb/DB;Lcom/mongodb/client/internal/OperationExecutor;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String name
        start local 2 // com.mongodb.DB database
        start local 3 // com.mongodb.client.internal.OperationExecutor executor
         0: .line 149
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 150
            aload 1 /* name */
            invokestatic com.mongodb.MongoNamespace.checkCollectionNameValidity:(Ljava/lang/String;)V
         2: .line 151
            aload 0 /* this */
            aload 1 /* name */
            putfield com.mongodb.DBCollection.name:Ljava/lang/String;
         3: .line 152
            aload 0 /* this */
            aload 2 /* database */
            putfield com.mongodb.DBCollection.database:Lcom/mongodb/DB;
         4: .line 153
            aload 0 /* this */
            aload 3 /* executor */
            putfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
         5: .line 154
            aload 0 /* this */
            new com.mongodb.Bytes$OptionHolder
            dup
            aload 2 /* database */
            invokevirtual com.mongodb.DB.getOptionHolder:()Lcom/mongodb/Bytes$OptionHolder;
            invokespecial com.mongodb.Bytes$OptionHolder.<init>:(Lcom/mongodb/Bytes$OptionHolder;)V
            putfield com.mongodb.DBCollection.optionHolder:Lcom/mongodb/Bytes$OptionHolder;
         6: .line 155
            aload 0 /* this */
            new com.mongodb.DBCollectionObjectFactory
            dup
            invokespecial com.mongodb.DBCollectionObjectFactory.<init>:()V
            putfield com.mongodb.DBCollection.objectFactory:Lcom/mongodb/DBCollectionObjectFactory;
         7: .line 156
            aload 0 /* this */
            new com.mongodb.CompoundDBObjectCodec
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getDefaultDBObjectCodec:()Lcom/mongodb/DBObjectCodec;
            invokespecial com.mongodb.CompoundDBObjectCodec.<init>:(Lorg/bson/codecs/Codec;)V
            putfield com.mongodb.DBCollection.objectCodec:Lcom/mongodb/CompoundDBObjectCodec;
         8: .line 157
            aload 0 /* this */
            aload 2 /* database */
            invokevirtual com.mongodb.DB.getMongo:()Lcom/mongodb/Mongo;
            invokevirtual com.mongodb.Mongo.getMongoClientOptions:()Lcom/mongodb/MongoClientOptions;
            invokevirtual com.mongodb.MongoClientOptions.getRetryWrites:()Z
            putfield com.mongodb.DBCollection.retryWrites:Z
         9: .line 158
            aload 0 /* this */
            aload 2 /* database */
            invokevirtual com.mongodb.DB.getMongo:()Lcom/mongodb/Mongo;
            invokevirtual com.mongodb.Mongo.getMongoClientOptions:()Lcom/mongodb/MongoClientOptions;
            invokevirtual com.mongodb.MongoClientOptions.getRetryReads:()Z
            putfield com.mongodb.DBCollection.retryReads:Z
        10: .line 159
            return
        end local 3 // com.mongodb.client.internal.OperationExecutor executor
        end local 2 // com.mongodb.DB database
        end local 1 // java.lang.String name
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Lcom/mongodb/DBCollection;
            0   11     1      name  Ljava/lang/String;
            0   11     2  database  Lcom/mongodb/DB;
            0   11     3  executor  Lcom/mongodb/client/internal/OperationExecutor;
    MethodParameters:
          Name  Flags
      name      final
      database  final
      executor  final

  protected void <init>(com.mongodb.DB, java.lang.String);
    descriptor: (Lcom/mongodb/DB;Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DB database
        start local 2 // java.lang.String name
         0: .line 168
            aload 0 /* this */
            aload 2 /* name */
            aload 1 /* database */
            aload 1 /* database */
            invokevirtual com.mongodb.DB.getExecutor:()Lcom/mongodb/client/internal/OperationExecutor;
            invokespecial com.mongodb.DBCollection.<init>:(Ljava/lang/String;Lcom/mongodb/DB;Lcom/mongodb/client/internal/OperationExecutor;)V
         1: .line 169
            return
        end local 2 // java.lang.String name
        end local 1 // com.mongodb.DB database
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/mongodb/DBCollection;
            0    2     1  database  Lcom/mongodb/DB;
            0    2     2      name  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      database  final
      name      final

  private static com.mongodb.BasicDBList toDBList(com.mongodb.operation.BatchCursor<com.mongodb.DBObject>);
    descriptor: (Lcom/mongodb/operation/BatchCursor;)Lcom/mongodb/BasicDBList;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.mongodb.operation.BatchCursor source
         0: .line 172
            new com.mongodb.BasicDBList
            dup
            invokespecial com.mongodb.BasicDBList.<init>:()V
            astore 1 /* dbList */
        start local 1 // com.mongodb.BasicDBList dbList
         1: .line 173
            goto 3
         2: .line 174
      StackMap locals: com.mongodb.BasicDBList
      StackMap stack:
            aload 1 /* dbList */
            aload 0 /* source */
            invokeinterface com.mongodb.operation.BatchCursor.next:()Ljava/util/List;
            invokevirtual com.mongodb.BasicDBList.addAll:(Ljava/util/Collection;)Z
            pop
         3: .line 173
      StackMap locals:
      StackMap stack:
            aload 0 /* source */
            invokeinterface com.mongodb.operation.BatchCursor.hasNext:()Z
            ifne 2
         4: .line 176
            aload 1 /* dbList */
            areturn
        end local 1 // com.mongodb.BasicDBList dbList
        end local 0 // com.mongodb.operation.BatchCursor source
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0  source  Lcom/mongodb/operation/BatchCursor<Lcom/mongodb/DBObject;>;
            1    5     1  dbList  Lcom/mongodb/BasicDBList;
    Signature: (Lcom/mongodb/operation/BatchCursor<Lcom/mongodb/DBObject;>;)Lcom/mongodb/BasicDBList;
    MethodParameters:
        Name  Flags
      source  final

  public com.mongodb.WriteResult insert(com.mongodb.DBObject, com.mongodb.WriteConcern);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject document
        start local 2 // com.mongodb.WriteConcern writeConcern
         0: .line 193
            aload 0 /* this */
            iconst_1
            anewarray com.mongodb.DBObject
            dup
            iconst_0
            aload 1 /* document */
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            aload 2 /* writeConcern */
            invokevirtual com.mongodb.DBCollection.insert:(Ljava/util/List;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
            areturn
        end local 2 // com.mongodb.WriteConcern writeConcern
        end local 1 // com.mongodb.DBObject document
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lcom/mongodb/DBCollection;
            0    1     1      document  Lcom/mongodb/DBObject;
            0    1     2  writeConcern  Lcom/mongodb/WriteConcern;
    MethodParameters:
              Name  Flags
      document      final
      writeConcern  final

  public com.mongodb.WriteResult insert(com.mongodb.DBObject[]);
    descriptor: ([Lcom/mongodb/DBObject;)Lcom/mongodb/WriteResult;
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject[] documents
         0: .line 209
            aload 0 /* this */
            aload 1 /* documents */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
            invokevirtual com.mongodb.DBCollection.insert:(Ljava/util/List;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
            areturn
        end local 1 // com.mongodb.DBObject[] documents
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/mongodb/DBCollection;
            0    1     1  documents  [Lcom/mongodb/DBObject;
    MethodParameters:
           Name  Flags
      documents  final

  public com.mongodb.WriteResult insert(com.mongodb.WriteConcern, com.mongodb.DBObject[]);
    descriptor: (Lcom/mongodb/WriteConcern;[Lcom/mongodb/DBObject;)Lcom/mongodb/WriteResult;
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.WriteConcern writeConcern
        start local 2 // com.mongodb.DBObject[] documents
         0: .line 224
            aload 0 /* this */
            aload 2 /* documents */
            aload 1 /* writeConcern */
            invokevirtual com.mongodb.DBCollection.insert:([Lcom/mongodb/DBObject;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
            areturn
        end local 2 // com.mongodb.DBObject[] documents
        end local 1 // com.mongodb.WriteConcern writeConcern
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lcom/mongodb/DBCollection;
            0    1     1  writeConcern  Lcom/mongodb/WriteConcern;
            0    1     2     documents  [Lcom/mongodb/DBObject;
    MethodParameters:
              Name  Flags
      writeConcern  final
      documents     final

  public com.mongodb.WriteResult insert(com.mongodb.DBObject[], com.mongodb.WriteConcern);
    descriptor: ([Lcom/mongodb/DBObject;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject[] documents
        start local 2 // com.mongodb.WriteConcern writeConcern
         0: .line 241
            aload 0 /* this */
            aload 1 /* documents */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            aload 2 /* writeConcern */
            invokevirtual com.mongodb.DBCollection.insert:(Ljava/util/List;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
            areturn
        end local 2 // com.mongodb.WriteConcern writeConcern
        end local 1 // com.mongodb.DBObject[] documents
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lcom/mongodb/DBCollection;
            0    1     1     documents  [Lcom/mongodb/DBObject;
            0    1     2  writeConcern  Lcom/mongodb/WriteConcern;
    MethodParameters:
              Name  Flags
      documents     final
      writeConcern  final

  public com.mongodb.WriteResult insert(java.util.List<? extends com.mongodb.DBObject>);
    descriptor: (Ljava/util/List;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List documents
         0: .line 257
            aload 0 /* this */
            aload 1 /* documents */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
            invokevirtual com.mongodb.DBCollection.insert:(Ljava/util/List;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
            areturn
        end local 1 // java.util.List documents
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/mongodb/DBCollection;
            0    1     1  documents  Ljava/util/List<+Lcom/mongodb/DBObject;>;
    Signature: (Ljava/util/List<+Lcom/mongodb/DBObject;>;)Lcom/mongodb/WriteResult;
    MethodParameters:
           Name  Flags
      documents  final

  public com.mongodb.WriteResult insert(java.util.List<? extends com.mongodb.DBObject>, com.mongodb.WriteConcern);
    descriptor: (Ljava/util/List;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List documents
        start local 2 // com.mongodb.WriteConcern aWriteConcern
         0: .line 274
            aload 0 /* this */
            aload 1 /* documents */
            aload 2 /* aWriteConcern */
            aconst_null
            invokevirtual com.mongodb.DBCollection.insert:(Ljava/util/List;Lcom/mongodb/WriteConcern;Lcom/mongodb/DBEncoder;)Lcom/mongodb/WriteResult;
            areturn
        end local 2 // com.mongodb.WriteConcern aWriteConcern
        end local 1 // java.util.List documents
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/mongodb/DBCollection;
            0    1     1      documents  Ljava/util/List<+Lcom/mongodb/DBObject;>;
            0    1     2  aWriteConcern  Lcom/mongodb/WriteConcern;
    Signature: (Ljava/util/List<+Lcom/mongodb/DBObject;>;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
    MethodParameters:
               Name  Flags
      documents      final
      aWriteConcern  final

  public com.mongodb.WriteResult insert(com.mongodb.DBObject[], com.mongodb.WriteConcern, com.mongodb.DBEncoder);
    descriptor: ([Lcom/mongodb/DBObject;Lcom/mongodb/WriteConcern;Lcom/mongodb/DBEncoder;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject[] documents
        start local 2 // com.mongodb.WriteConcern aWriteConcern
        start local 3 // com.mongodb.DBEncoder encoder
         0: .line 292
            aload 0 /* this */
            aload 1 /* documents */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            aload 2 /* aWriteConcern */
            aload 3 /* encoder */
            invokevirtual com.mongodb.DBCollection.insert:(Ljava/util/List;Lcom/mongodb/WriteConcern;Lcom/mongodb/DBEncoder;)Lcom/mongodb/WriteResult;
            areturn
        end local 3 // com.mongodb.DBEncoder encoder
        end local 2 // com.mongodb.WriteConcern aWriteConcern
        end local 1 // com.mongodb.DBObject[] documents
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/mongodb/DBCollection;
            0    1     1      documents  [Lcom/mongodb/DBObject;
            0    1     2  aWriteConcern  Lcom/mongodb/WriteConcern;
            0    1     3        encoder  Lcom/mongodb/DBEncoder;
    MethodParameters:
               Name  Flags
      documents      final
      aWriteConcern  final
      encoder        final

  public com.mongodb.WriteResult insert(java.util.List<? extends com.mongodb.DBObject>, com.mongodb.WriteConcern, com.mongodb.DBEncoder);
    descriptor: (Ljava/util/List;Lcom/mongodb/WriteConcern;Lcom/mongodb/DBEncoder;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List documents
        start local 2 // com.mongodb.WriteConcern aWriteConcern
        start local 3 // com.mongodb.DBEncoder dbEncoder
         0: .line 311
            aload 0 /* this */
            aload 1 /* documents */
            new com.mongodb.InsertOptions
            dup
            invokespecial com.mongodb.InsertOptions.<init>:()V
            aload 2 /* aWriteConcern */
            invokevirtual com.mongodb.InsertOptions.writeConcern:(Lcom/mongodb/WriteConcern;)Lcom/mongodb/InsertOptions;
            aload 3 /* dbEncoder */
            invokevirtual com.mongodb.InsertOptions.dbEncoder:(Lcom/mongodb/DBEncoder;)Lcom/mongodb/InsertOptions;
            invokevirtual com.mongodb.DBCollection.insert:(Ljava/util/List;Lcom/mongodb/InsertOptions;)Lcom/mongodb/WriteResult;
            areturn
        end local 3 // com.mongodb.DBEncoder dbEncoder
        end local 2 // com.mongodb.WriteConcern aWriteConcern
        end local 1 // java.util.List documents
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/mongodb/DBCollection;
            0    1     1      documents  Ljava/util/List<+Lcom/mongodb/DBObject;>;
            0    1     2  aWriteConcern  Lcom/mongodb/WriteConcern;
            0    1     3      dbEncoder  Lcom/mongodb/DBEncoder;
    Signature: (Ljava/util/List<+Lcom/mongodb/DBObject;>;Lcom/mongodb/WriteConcern;Lcom/mongodb/DBEncoder;)Lcom/mongodb/WriteResult;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        com.mongodb.lang.Nullable()
    MethodParameters:
               Name  Flags
      documents      final
      aWriteConcern  final
      dbEncoder      final

  public com.mongodb.WriteResult insert(java.util.List<? extends com.mongodb.DBObject>, com.mongodb.InsertOptions);
    descriptor: (Ljava/util/List;Lcom/mongodb/InsertOptions;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=8, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List documents
        start local 2 // com.mongodb.InsertOptions insertOptions
         0: .line 332
            aload 2 /* insertOptions */
            invokevirtual com.mongodb.InsertOptions.getWriteConcern:()Lcom/mongodb/WriteConcern;
            ifnull 1
            aload 2 /* insertOptions */
            invokevirtual com.mongodb.InsertOptions.getWriteConcern:()Lcom/mongodb/WriteConcern;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
      StackMap locals:
      StackMap stack: com.mongodb.WriteConcern
         2: astore 3 /* writeConcern */
        start local 3 // com.mongodb.WriteConcern writeConcern
         3: .line 333
            aload 0 /* this */
            aload 2 /* insertOptions */
            invokevirtual com.mongodb.InsertOptions.getDbEncoder:()Lcom/mongodb/DBEncoder;
            invokevirtual com.mongodb.DBCollection.toEncoder:(Lcom/mongodb/DBEncoder;)Lorg/bson/codecs/Encoder;
            astore 4 /* encoder */
        start local 4 // org.bson.codecs.Encoder encoder
         4: .line 335
            new java.util.ArrayList
            dup
            aload 1 /* documents */
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 5 /* insertRequestList */
        start local 5 // java.util.List insertRequestList
         5: .line 336
            aload 1 /* documents */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 10
      StackMap locals: com.mongodb.DBCollection java.util.List com.mongodb.InsertOptions com.mongodb.WriteConcern org.bson.codecs.Encoder java.util.List top java.util.Iterator
      StackMap stack:
         6: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.mongodb.DBObject
            astore 6 /* cur */
        start local 6 // com.mongodb.DBObject cur
         7: .line 337
            aload 6 /* cur */
            ldc "_id"
            invokeinterface com.mongodb.DBObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            ifnonnull 9
         8: .line 338
            aload 6 /* cur */
            ldc "_id"
            new org.bson.types.ObjectId
            dup
            invokespecial org.bson.types.ObjectId.<init>:()V
            invokeinterface com.mongodb.DBObject.put:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         9: .line 340
      StackMap locals: com.mongodb.DBCollection java.util.List com.mongodb.InsertOptions com.mongodb.WriteConcern org.bson.codecs.Encoder java.util.List com.mongodb.DBObject java.util.Iterator
      StackMap stack:
            aload 5 /* insertRequestList */
            new com.mongodb.bulk.InsertRequest
            dup
            new org.bson.BsonDocumentWrapper
            dup
            aload 6 /* cur */
            aload 4 /* encoder */
            invokespecial org.bson.BsonDocumentWrapper.<init>:(Ljava/lang/Object;Lorg/bson/codecs/Encoder;)V
            invokespecial com.mongodb.bulk.InsertRequest.<init>:(Lorg/bson/BsonDocument;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // com.mongodb.DBObject cur
        10: .line 336
      StackMap locals: com.mongodb.DBCollection java.util.List com.mongodb.InsertOptions com.mongodb.WriteConcern org.bson.codecs.Encoder java.util.List top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        11: .line 342
            aload 0 /* this */
            aload 5 /* insertRequestList */
            aload 3 /* writeConcern */
            aload 2 /* insertOptions */
            invokevirtual com.mongodb.InsertOptions.isContinueOnError:()Z
            aload 2 /* insertOptions */
            invokevirtual com.mongodb.InsertOptions.getBypassDocumentValidation:()Ljava/lang/Boolean;
            invokevirtual com.mongodb.DBCollection.insert:(Ljava/util/List;Lcom/mongodb/WriteConcern;ZLjava/lang/Boolean;)Lcom/mongodb/WriteResult;
            areturn
        end local 5 // java.util.List insertRequestList
        end local 4 // org.bson.codecs.Encoder encoder
        end local 3 // com.mongodb.WriteConcern writeConcern
        end local 2 // com.mongodb.InsertOptions insertOptions
        end local 1 // java.util.List documents
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   12     0               this  Lcom/mongodb/DBCollection;
            0   12     1          documents  Ljava/util/List<+Lcom/mongodb/DBObject;>;
            0   12     2      insertOptions  Lcom/mongodb/InsertOptions;
            3   12     3       writeConcern  Lcom/mongodb/WriteConcern;
            4   12     4            encoder  Lorg/bson/codecs/Encoder<Lcom/mongodb/DBObject;>;
            5   12     5  insertRequestList  Ljava/util/List<Lcom/mongodb/bulk/InsertRequest;>;
            7   10     6                cur  Lcom/mongodb/DBObject;
    Signature: (Ljava/util/List<+Lcom/mongodb/DBObject;>;Lcom/mongodb/InsertOptions;)Lcom/mongodb/WriteResult;
    MethodParameters:
               Name  Flags
      documents      final
      insertOptions  final

  private org.bson.codecs.Encoder<com.mongodb.DBObject> toEncoder(com.mongodb.DBEncoder);
    descriptor: (Lcom/mongodb/DBEncoder;)Lorg/bson/codecs/Encoder;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBEncoder dbEncoder
         0: .line 346
            aload 1 /* dbEncoder */
            ifnull 1
            new com.mongodb.DBEncoderAdapter
            dup
            aload 1 /* dbEncoder */
            invokespecial com.mongodb.DBEncoderAdapter.<init>:(Lcom/mongodb/DBEncoder;)V
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            getfield com.mongodb.DBCollection.objectCodec:Lcom/mongodb/CompoundDBObjectCodec;
      StackMap locals:
      StackMap stack: org.bson.codecs.Encoder
         2: areturn
        end local 1 // com.mongodb.DBEncoder dbEncoder
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lcom/mongodb/DBCollection;
            0    3     1  dbEncoder  Lcom/mongodb/DBEncoder;
    Signature: (Lcom/mongodb/DBEncoder;)Lorg/bson/codecs/Encoder<Lcom/mongodb/DBObject;>;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
    MethodParameters:
           Name  Flags
      dbEncoder  final

  private com.mongodb.WriteResult insert(java.util.List<com.mongodb.bulk.InsertRequest>, com.mongodb.WriteConcern, boolean, java.lang.Boolean);
    descriptor: (Ljava/util/List;Lcom/mongodb/WriteConcern;ZLjava/lang/Boolean;)Lcom/mongodb/WriteResult;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=5, args_size=5
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List insertRequestList
        start local 2 // com.mongodb.WriteConcern writeConcern
        start local 3 // boolean continueOnError
        start local 4 // java.lang.Boolean bypassDocumentValidation
         0: .line 351
            aload 0 /* this */
         1: new com.mongodb.operation.InsertOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            iload 3 /* continueOnError */
            ifeq 2
            iconst_0
            goto 3
      StackMap locals: com.mongodb.DBCollection java.util.List com.mongodb.WriteConcern int java.lang.Boolean
      StackMap stack: com.mongodb.DBCollection new 1 new 1 com.mongodb.MongoNamespace
         2: iconst_1
      StackMap locals: com.mongodb.DBCollection java.util.List com.mongodb.WriteConcern int java.lang.Boolean
      StackMap stack: com.mongodb.DBCollection new 1 new 1 com.mongodb.MongoNamespace int
         3: aload 2 /* writeConcern */
            aload 0 /* this */
            getfield com.mongodb.DBCollection.retryWrites:Z
            aload 1 /* insertRequestList */
            invokespecial com.mongodb.operation.InsertOperation.<init>:(Lcom/mongodb/MongoNamespace;ZLcom/mongodb/WriteConcern;ZLjava/util/List;)V
         4: .line 352
            aload 4 /* bypassDocumentValidation */
            invokevirtual com.mongodb.operation.InsertOperation.bypassDocumentValidation:(Ljava/lang/Boolean;)Lcom/mongodb/operation/BaseWriteOperation;
         5: .line 351
            invokevirtual com.mongodb.DBCollection.executeWriteOperation:(Lcom/mongodb/operation/BaseWriteOperation;)Lcom/mongodb/WriteResult;
            areturn
        end local 4 // java.lang.Boolean bypassDocumentValidation
        end local 3 // boolean continueOnError
        end local 2 // com.mongodb.WriteConcern writeConcern
        end local 1 // java.util.List insertRequestList
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    6     0                      this  Lcom/mongodb/DBCollection;
            0    6     1         insertRequestList  Ljava/util/List<Lcom/mongodb/bulk/InsertRequest;>;
            0    6     2              writeConcern  Lcom/mongodb/WriteConcern;
            0    6     3           continueOnError  Z
            0    6     4  bypassDocumentValidation  Ljava/lang/Boolean;
    Signature: (Ljava/util/List<Lcom/mongodb/bulk/InsertRequest;>;Lcom/mongodb/WriteConcern;ZLjava/lang/Boolean;)Lcom/mongodb/WriteResult;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        com.mongodb.lang.Nullable()
    MethodParameters:
                          Name  Flags
      insertRequestList         final
      writeConcern              final
      continueOnError           final
      bypassDocumentValidation  final

  com.mongodb.WriteResult executeWriteOperation(com.mongodb.operation.BaseWriteOperation);
    descriptor: (Lcom/mongodb/operation/BaseWriteOperation;)Lcom/mongodb/WriteResult;
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.operation.BaseWriteOperation operation
         0: .line 356
            aload 0 /* this */
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            aload 1 /* operation */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/WriteOperation;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            checkcast com.mongodb.WriteConcernResult
            invokevirtual com.mongodb.DBCollection.translateWriteResult:(Lcom/mongodb/WriteConcernResult;)Lcom/mongodb/WriteResult;
            areturn
        end local 1 // com.mongodb.operation.BaseWriteOperation operation
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/mongodb/DBCollection;
            0    1     1  operation  Lcom/mongodb/operation/BaseWriteOperation;
    MethodParameters:
           Name  Flags
      operation  final

  private com.mongodb.WriteResult translateWriteResult(com.mongodb.WriteConcernResult);
    descriptor: (Lcom/mongodb/WriteConcernResult;)Lcom/mongodb/WriteResult;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.WriteConcernResult writeConcernResult
         0: .line 360
            aload 1 /* writeConcernResult */
            invokevirtual com.mongodb.WriteConcernResult.wasAcknowledged:()Z
            ifne 2
         1: .line 361
            invokestatic com.mongodb.WriteResult.unacknowledged:()Lcom/mongodb/WriteResult;
            areturn
         2: .line 364
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* writeConcernResult */
            invokevirtual com.mongodb.WriteConcernResult.getCount:()I
            aload 1 /* writeConcernResult */
            invokevirtual com.mongodb.WriteConcernResult.isUpdateOfExisting:()Z
         3: .line 365
            aload 1 /* writeConcernResult */
            invokevirtual com.mongodb.WriteConcernResult.getUpsertedId:()Lorg/bson/BsonValue;
         4: .line 364
            invokevirtual com.mongodb.DBCollection.translateWriteResult:(IZLorg/bson/BsonValue;)Lcom/mongodb/WriteResult;
            areturn
        end local 1 // com.mongodb.WriteConcernResult writeConcernResult
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Lcom/mongodb/DBCollection;
            0    5     1  writeConcernResult  Lcom/mongodb/WriteConcernResult;
    MethodParameters:
                    Name  Flags
      writeConcernResult  final

  private com.mongodb.WriteResult translateWriteResult(int, boolean, org.bson.BsonValue);
    descriptor: (IZLorg/bson/BsonValue;)Lcom/mongodb/WriteResult;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // int count
        start local 2 // boolean isUpdateOfExisting
        start local 3 // org.bson.BsonValue upsertedId
         0: .line 369
            aload 3 /* upsertedId */
            ifnonnull 2
         1: .line 370
            aconst_null
            goto 6
         2: .line 371
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getObjectCodec:()Lorg/bson/codecs/Codec;
            new org.bson.BsonDocumentReader
            dup
            new org.bson.BsonDocument
            dup
            ldc "_id"
            aload 3 /* upsertedId */
            invokespecial org.bson.BsonDocument.<init>:(Ljava/lang/String;Lorg/bson/BsonValue;)V
            invokespecial org.bson.BsonDocumentReader.<init>:(Lorg/bson/BsonDocument;)V
         3: .line 372
            invokestatic org.bson.codecs.DecoderContext.builder:()Lorg/bson/codecs/DecoderContext$Builder;
            invokevirtual org.bson.codecs.DecoderContext$Builder.build:()Lorg/bson/codecs/DecoderContext;
         4: .line 371
            invokeinterface org.bson.codecs.Codec.decode:(Lorg/bson/BsonReader;Lorg/bson/codecs/DecoderContext;)Ljava/lang/Object;
            checkcast com.mongodb.DBObject
         5: .line 373
            ldc "_id"
            invokeinterface com.mongodb.DBObject.get:(Ljava/lang/String;)Ljava/lang/Object;
         6: .line 369
      StackMap locals:
      StackMap stack: java.lang.Object
            astore 4 /* newUpsertedId */
        start local 4 // java.lang.Object newUpsertedId
         7: .line 374
            new com.mongodb.WriteResult
            dup
            iload 1 /* count */
            iload 2 /* isUpdateOfExisting */
            aload 4 /* newUpsertedId */
            invokespecial com.mongodb.WriteResult.<init>:(IZLjava/lang/Object;)V
            areturn
        end local 4 // java.lang.Object newUpsertedId
        end local 3 // org.bson.BsonValue upsertedId
        end local 2 // boolean isUpdateOfExisting
        end local 1 // int count
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    8     0                this  Lcom/mongodb/DBCollection;
            0    8     1               count  I
            0    8     2  isUpdateOfExisting  Z
            0    8     3          upsertedId  Lorg/bson/BsonValue;
            7    8     4       newUpsertedId  Ljava/lang/Object;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        com.mongodb.lang.Nullable()
    MethodParameters:
                    Name  Flags
      count               final
      isUpdateOfExisting  final
      upsertedId          final

  public com.mongodb.WriteResult save(com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject document
         0: .line 397
            aload 0 /* this */
            aload 1 /* document */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
            invokevirtual com.mongodb.DBCollection.save:(Lcom/mongodb/DBObject;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
            areturn
        end local 1 // com.mongodb.DBObject document
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/mongodb/DBCollection;
            0    1     1  document  Lcom/mongodb/DBObject;
    MethodParameters:
          Name  Flags
      document  final

  public com.mongodb.WriteResult save(com.mongodb.DBObject, com.mongodb.WriteConcern);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject document
        start local 2 // com.mongodb.WriteConcern writeConcern
         0: .line 421
            aload 1 /* document */
            ldc "_id"
            invokeinterface com.mongodb.DBObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            astore 3 /* id */
        start local 3 // java.lang.Object id
         1: .line 422
            aload 3 /* id */
            ifnonnull 3
         2: .line 423
            aload 0 /* this */
            aload 1 /* document */
            aload 2 /* writeConcern */
            invokevirtual com.mongodb.DBCollection.insert:(Lcom/mongodb/DBObject;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
            areturn
         3: .line 425
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 1 /* document */
            aload 3 /* id */
            aload 2 /* writeConcern */
            invokevirtual com.mongodb.DBCollection.replaceOrInsert:(Lcom/mongodb/DBObject;Ljava/lang/Object;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
            areturn
        end local 3 // java.lang.Object id
        end local 2 // com.mongodb.WriteConcern writeConcern
        end local 1 // com.mongodb.DBObject document
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lcom/mongodb/DBCollection;
            0    4     1      document  Lcom/mongodb/DBObject;
            0    4     2  writeConcern  Lcom/mongodb/WriteConcern;
            1    4     3            id  Ljava/lang/Object;
    MethodParameters:
              Name  Flags
      document      final
      writeConcern  final

  private com.mongodb.WriteResult replaceOrInsert(com.mongodb.DBObject, java.lang.Object, com.mongodb.WriteConcern);
    descriptor: (Lcom/mongodb/DBObject;Ljava/lang/Object;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=6, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject obj
        start local 2 // java.lang.Object id
        start local 3 // com.mongodb.WriteConcern writeConcern
         0: .line 431
            new com.mongodb.BasicDBObject
            dup
            ldc "_id"
            aload 2 /* id */
            invokespecial com.mongodb.BasicDBObject.<init>:(Ljava/lang/String;Ljava/lang/Object;)V
            astore 4 /* filter */
        start local 4 // com.mongodb.DBObject filter
         1: .line 433
            new com.mongodb.bulk.UpdateRequest
            dup
            aload 0 /* this */
            aload 4 /* filter */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            aload 0 /* this */
            aload 1 /* obj */
            aload 0 /* this */
            getfield com.mongodb.DBCollection.objectCodec:Lcom/mongodb/CompoundDBObjectCodec;
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;Lorg/bson/codecs/Encoder;)Lorg/bson/BsonDocument;
         2: .line 434
            getstatic com.mongodb.bulk.WriteRequest$Type.REPLACE:Lcom/mongodb/bulk/WriteRequest$Type;
         3: .line 433
            invokespecial com.mongodb.bulk.UpdateRequest.<init>:(Lorg/bson/BsonDocument;Lorg/bson/BsonValue;Lcom/mongodb/bulk/WriteRequest$Type;)V
         4: .line 434
            iconst_1
            invokevirtual com.mongodb.bulk.UpdateRequest.upsert:(Z)Lcom/mongodb/bulk/UpdateRequest;
         5: .line 433
            astore 5 /* replaceRequest */
        start local 5 // com.mongodb.bulk.UpdateRequest replaceRequest
         6: .line 436
            aload 0 /* this */
            new com.mongodb.operation.UpdateOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            iconst_0
            aload 3 /* writeConcern */
            aload 0 /* this */
            getfield com.mongodb.DBCollection.retryWrites:Z
         7: .line 437
            aload 5 /* replaceRequest */
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            invokespecial com.mongodb.operation.UpdateOperation.<init>:(Lcom/mongodb/MongoNamespace;ZLcom/mongodb/WriteConcern;ZLjava/util/List;)V
         8: .line 436
            invokevirtual com.mongodb.DBCollection.executeWriteOperation:(Lcom/mongodb/operation/BaseWriteOperation;)Lcom/mongodb/WriteResult;
            areturn
        end local 5 // com.mongodb.bulk.UpdateRequest replaceRequest
        end local 4 // com.mongodb.DBObject filter
        end local 3 // com.mongodb.WriteConcern writeConcern
        end local 2 // java.lang.Object id
        end local 1 // com.mongodb.DBObject obj
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0            this  Lcom/mongodb/DBCollection;
            0    9     1             obj  Lcom/mongodb/DBObject;
            0    9     2              id  Ljava/lang/Object;
            0    9     3    writeConcern  Lcom/mongodb/WriteConcern;
            1    9     4          filter  Lcom/mongodb/DBObject;
            6    9     5  replaceRequest  Lcom/mongodb/bulk/UpdateRequest;
    MethodParameters:
              Name  Flags
      obj           final
      id            final
      writeConcern  final

  public com.mongodb.WriteResult update(com.mongodb.DBObject, com.mongodb.DBObject, boolean, boolean, com.mongodb.WriteConcern);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZZLcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=6
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject update
        start local 3 // boolean upsert
        start local 4 // boolean multi
        start local 5 // com.mongodb.WriteConcern aWriteConcern
         0: .line 459
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* update */
            iload 3 /* upsert */
            iload 4 /* multi */
            aload 5 /* aWriteConcern */
            aconst_null
            invokevirtual com.mongodb.DBCollection.update:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZZLcom/mongodb/WriteConcern;Lcom/mongodb/DBEncoder;)Lcom/mongodb/WriteResult;
            areturn
        end local 5 // com.mongodb.WriteConcern aWriteConcern
        end local 4 // boolean multi
        end local 3 // boolean upsert
        end local 2 // com.mongodb.DBObject update
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/mongodb/DBCollection;
            0    1     1          query  Lcom/mongodb/DBObject;
            0    1     2         update  Lcom/mongodb/DBObject;
            0    1     3         upsert  Z
            0    1     4          multi  Z
            0    1     5  aWriteConcern  Lcom/mongodb/WriteConcern;
    MethodParameters:
               Name  Flags
      query          final
      update         final
      upsert         final
      multi          final
      aWriteConcern  final

  public com.mongodb.WriteResult update(com.mongodb.DBObject, com.mongodb.DBObject, boolean, boolean, com.mongodb.WriteConcern, com.mongodb.DBEncoder);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZZLcom/mongodb/WriteConcern;Lcom/mongodb/DBEncoder;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=7
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject update
        start local 3 // boolean upsert
        start local 4 // boolean multi
        start local 5 // com.mongodb.WriteConcern concern
        start local 6 // com.mongodb.DBEncoder encoder
         0: .line 482
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* update */
            iload 3 /* upsert */
            iload 4 /* multi */
            aload 5 /* concern */
            aconst_null
            aload 6 /* encoder */
            invokevirtual com.mongodb.DBCollection.update:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZZLcom/mongodb/WriteConcern;Ljava/lang/Boolean;Lcom/mongodb/DBEncoder;)Lcom/mongodb/WriteResult;
            areturn
        end local 6 // com.mongodb.DBEncoder encoder
        end local 5 // com.mongodb.WriteConcern concern
        end local 4 // boolean multi
        end local 3 // boolean upsert
        end local 2 // com.mongodb.DBObject update
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/mongodb/DBCollection;
            0    1     1    query  Lcom/mongodb/DBObject;
            0    1     2   update  Lcom/mongodb/DBObject;
            0    1     3   upsert  Z
            0    1     4    multi  Z
            0    1     5  concern  Lcom/mongodb/WriteConcern;
            0    1     6  encoder  Lcom/mongodb/DBEncoder;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      5:
        com.mongodb.lang.Nullable()
    MethodParameters:
         Name  Flags
      query    final
      update   final
      upsert   final
      multi    final
      concern  final
      encoder  final

  public com.mongodb.WriteResult update(com.mongodb.DBObject, com.mongodb.DBObject, boolean, boolean, com.mongodb.WriteConcern, java.lang.Boolean, com.mongodb.DBEncoder);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZZLcom/mongodb/WriteConcern;Ljava/lang/Boolean;Lcom/mongodb/DBEncoder;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=8
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject update
        start local 3 // boolean upsert
        start local 4 // boolean multi
        start local 5 // com.mongodb.WriteConcern concern
        start local 6 // java.lang.Boolean bypassDocumentValidation
        start local 7 // com.mongodb.DBEncoder encoder
         0: .line 507
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* update */
            new com.mongodb.client.model.DBCollectionUpdateOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionUpdateOptions.<init>:()V
            iload 3 /* upsert */
            invokevirtual com.mongodb.client.model.DBCollectionUpdateOptions.upsert:(Z)Lcom/mongodb/client/model/DBCollectionUpdateOptions;
            iload 4 /* multi */
            invokevirtual com.mongodb.client.model.DBCollectionUpdateOptions.multi:(Z)Lcom/mongodb/client/model/DBCollectionUpdateOptions;
         1: .line 508
            aload 5 /* concern */
            invokevirtual com.mongodb.client.model.DBCollectionUpdateOptions.writeConcern:(Lcom/mongodb/WriteConcern;)Lcom/mongodb/client/model/DBCollectionUpdateOptions;
            aload 6 /* bypassDocumentValidation */
            invokevirtual com.mongodb.client.model.DBCollectionUpdateOptions.bypassDocumentValidation:(Ljava/lang/Boolean;)Lcom/mongodb/client/model/DBCollectionUpdateOptions;
            aload 7 /* encoder */
            invokevirtual com.mongodb.client.model.DBCollectionUpdateOptions.encoder:(Lcom/mongodb/DBEncoder;)Lcom/mongodb/client/model/DBCollectionUpdateOptions;
         2: .line 507
            invokevirtual com.mongodb.DBCollection.update:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionUpdateOptions;)Lcom/mongodb/WriteResult;
            areturn
        end local 7 // com.mongodb.DBEncoder encoder
        end local 6 // java.lang.Boolean bypassDocumentValidation
        end local 5 // com.mongodb.WriteConcern concern
        end local 4 // boolean multi
        end local 3 // boolean upsert
        end local 2 // com.mongodb.DBObject update
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    3     0                      this  Lcom/mongodb/DBCollection;
            0    3     1                     query  Lcom/mongodb/DBObject;
            0    3     2                    update  Lcom/mongodb/DBObject;
            0    3     3                    upsert  Z
            0    3     4                     multi  Z
            0    3     5                   concern  Lcom/mongodb/WriteConcern;
            0    3     6  bypassDocumentValidation  Ljava/lang/Boolean;
            0    3     7                   encoder  Lcom/mongodb/DBEncoder;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      5:
        com.mongodb.lang.Nullable()
      6:
        com.mongodb.lang.Nullable()
    MethodParameters:
                          Name  Flags
      query                     final
      update                    final
      upsert                    final
      multi                     final
      concern                   final
      bypassDocumentValidation  final
      encoder                   final

  public com.mongodb.WriteResult update(com.mongodb.DBObject, com.mongodb.DBObject, boolean, boolean);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZZ)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject update
        start local 3 // boolean upsert
        start local 4 // boolean multi
         0: .line 527
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* update */
            iload 3 /* upsert */
            iload 4 /* multi */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
            invokevirtual com.mongodb.DBCollection.update:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZZLcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
            areturn
        end local 4 // boolean multi
        end local 3 // boolean upsert
        end local 2 // com.mongodb.DBObject update
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/mongodb/DBCollection;
            0    1     1   query  Lcom/mongodb/DBObject;
            0    1     2  update  Lcom/mongodb/DBObject;
            0    1     3  upsert  Z
            0    1     4   multi  Z
    MethodParameters:
        Name  Flags
      query   final
      update  final
      upsert  final
      multi   final

  public com.mongodb.WriteResult update(com.mongodb.DBObject, com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject update
         0: .line 543
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* update */
            iconst_0
            iconst_0
            invokevirtual com.mongodb.DBCollection.update:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZZ)Lcom/mongodb/WriteResult;
            areturn
        end local 2 // com.mongodb.DBObject update
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/mongodb/DBCollection;
            0    1     1   query  Lcom/mongodb/DBObject;
            0    1     2  update  Lcom/mongodb/DBObject;
    MethodParameters:
        Name  Flags
      query   final
      update  final

  public com.mongodb.WriteResult updateMulti(com.mongodb.DBObject, com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject update
         0: .line 559
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* update */
            iconst_0
            iconst_1
            invokevirtual com.mongodb.DBCollection.update:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZZ)Lcom/mongodb/WriteResult;
            areturn
        end local 2 // com.mongodb.DBObject update
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/mongodb/DBCollection;
            0    1     1   query  Lcom/mongodb/DBObject;
            0    1     2  update  Lcom/mongodb/DBObject;
    MethodParameters:
        Name  Flags
      query   final
      update  final

  public com.mongodb.WriteResult update(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.client.model.DBCollectionUpdateOptions);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionUpdateOptions;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject update
        start local 3 // com.mongodb.client.model.DBCollectionUpdateOptions options
         0: .line 577
            ldc "query"
            aload 1 /* query */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 578
            ldc "update"
            aload 2 /* update */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 579
            ldc "options"
            aload 3 /* options */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 580
            aload 3 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionUpdateOptions.getWriteConcern:()Lcom/mongodb/WriteConcern;
            ifnull 4
            aload 3 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionUpdateOptions.getWriteConcern:()Lcom/mongodb/WriteConcern;
            goto 5
      StackMap locals:
      StackMap stack:
         4: aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
      StackMap locals:
      StackMap stack: com.mongodb.WriteConcern
         5: astore 4 /* writeConcern */
        start local 4 // com.mongodb.WriteConcern writeConcern
         6: .line 581
            aload 2 /* update */
            invokeinterface com.mongodb.DBObject.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 8
            aload 2 /* update */
            invokeinterface com.mongodb.DBObject.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            ldc "$"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 8
         7: .line 582
            getstatic com.mongodb.bulk.WriteRequest$Type.UPDATE:Lcom/mongodb/bulk/WriteRequest$Type;
            goto 9
         8: .line 583
      StackMap locals: com.mongodb.WriteConcern
      StackMap stack:
            getstatic com.mongodb.bulk.WriteRequest$Type.REPLACE:Lcom/mongodb/bulk/WriteRequest$Type;
         9: .line 581
      StackMap locals:
      StackMap stack: com.mongodb.bulk.WriteRequest$Type
            astore 5 /* updateType */
        start local 5 // com.mongodb.bulk.WriteRequest$Type updateType
        10: .line 584
            new com.mongodb.bulk.UpdateRequest
            dup
            aload 0 /* this */
            aload 1 /* query */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            aload 0 /* this */
            aload 2 /* update */
            aload 3 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionUpdateOptions.getEncoder:()Lcom/mongodb/DBEncoder;
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;Lcom/mongodb/DBEncoder;)Lorg/bson/BsonDocument;
            aload 5 /* updateType */
            invokespecial com.mongodb.bulk.UpdateRequest.<init>:(Lorg/bson/BsonDocument;Lorg/bson/BsonValue;Lcom/mongodb/bulk/WriteRequest$Type;)V
        11: .line 585
            aload 3 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionUpdateOptions.isUpsert:()Z
            invokevirtual com.mongodb.bulk.UpdateRequest.upsert:(Z)Lcom/mongodb/bulk/UpdateRequest;
            aload 3 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionUpdateOptions.isMulti:()Z
            invokevirtual com.mongodb.bulk.UpdateRequest.multi:(Z)Lcom/mongodb/bulk/UpdateRequest;
        12: .line 586
            aload 3 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionUpdateOptions.getCollation:()Lcom/mongodb/client/model/Collation;
            invokevirtual com.mongodb.bulk.UpdateRequest.collation:(Lcom/mongodb/client/model/Collation;)Lcom/mongodb/bulk/UpdateRequest;
        13: .line 587
            aload 0 /* this */
            aload 3 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionUpdateOptions.getArrayFilters:()Ljava/util/List;
            aload 3 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionUpdateOptions.getEncoder:()Lcom/mongodb/DBEncoder;
            invokevirtual com.mongodb.DBCollection.wrapAllowNull:(Ljava/util/List;Lcom/mongodb/DBEncoder;)Ljava/util/List;
            invokevirtual com.mongodb.bulk.UpdateRequest.arrayFilters:(Ljava/util/List;)Lcom/mongodb/bulk/UpdateRequest;
        14: .line 584
            astore 6 /* updateRequest */
        start local 6 // com.mongodb.bulk.UpdateRequest updateRequest
        15: .line 588
            aload 0 /* this */
            new com.mongodb.operation.UpdateOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            iconst_1
            aload 4 /* writeConcern */
            aload 0 /* this */
            getfield com.mongodb.DBCollection.retryWrites:Z
        16: .line 589
            aload 6 /* updateRequest */
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            invokespecial com.mongodb.operation.UpdateOperation.<init>:(Lcom/mongodb/MongoNamespace;ZLcom/mongodb/WriteConcern;ZLjava/util/List;)V
            aload 3 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionUpdateOptions.getBypassDocumentValidation:()Ljava/lang/Boolean;
            invokevirtual com.mongodb.operation.UpdateOperation.bypassDocumentValidation:(Ljava/lang/Boolean;)Lcom/mongodb/operation/BaseWriteOperation;
        17: .line 588
            invokevirtual com.mongodb.DBCollection.executeWriteOperation:(Lcom/mongodb/operation/BaseWriteOperation;)Lcom/mongodb/WriteResult;
            areturn
        end local 6 // com.mongodb.bulk.UpdateRequest updateRequest
        end local 5 // com.mongodb.bulk.WriteRequest$Type updateType
        end local 4 // com.mongodb.WriteConcern writeConcern
        end local 3 // com.mongodb.client.model.DBCollectionUpdateOptions options
        end local 2 // com.mongodb.DBObject update
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   18     0           this  Lcom/mongodb/DBCollection;
            0   18     1          query  Lcom/mongodb/DBObject;
            0   18     2         update  Lcom/mongodb/DBObject;
            0   18     3        options  Lcom/mongodb/client/model/DBCollectionUpdateOptions;
            6   18     4   writeConcern  Lcom/mongodb/WriteConcern;
           10   18     5     updateType  Lcom/mongodb/bulk/WriteRequest$Type;
           15   18     6  updateRequest  Lcom/mongodb/bulk/UpdateRequest;
    MethodParameters:
         Name  Flags
      query    final
      update   final
      options  final

  public com.mongodb.WriteResult remove(com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
         0: .line 604
            aload 0 /* this */
            aload 1 /* query */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
            invokevirtual com.mongodb.DBCollection.remove:(Lcom/mongodb/DBObject;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
            areturn
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/mongodb/DBCollection;
            0    1     1  query  Lcom/mongodb/DBObject;
    MethodParameters:
       Name  Flags
      query  final

  public com.mongodb.WriteResult remove(com.mongodb.DBObject, com.mongodb.WriteConcern);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.WriteConcern writeConcern
         0: .line 620
            aload 0 /* this */
            aload 1 /* query */
            new com.mongodb.client.model.DBCollectionRemoveOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionRemoveOptions.<init>:()V
            aload 2 /* writeConcern */
            invokevirtual com.mongodb.client.model.DBCollectionRemoveOptions.writeConcern:(Lcom/mongodb/WriteConcern;)Lcom/mongodb/client/model/DBCollectionRemoveOptions;
            invokevirtual com.mongodb.DBCollection.remove:(Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionRemoveOptions;)Lcom/mongodb/WriteResult;
            areturn
        end local 2 // com.mongodb.WriteConcern writeConcern
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lcom/mongodb/DBCollection;
            0    1     1         query  Lcom/mongodb/DBObject;
            0    1     2  writeConcern  Lcom/mongodb/WriteConcern;
    MethodParameters:
              Name  Flags
      query         final
      writeConcern  final

  public com.mongodb.WriteResult remove(com.mongodb.DBObject, com.mongodb.WriteConcern, com.mongodb.DBEncoder);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/WriteConcern;Lcom/mongodb/DBEncoder;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.WriteConcern writeConcern
        start local 3 // com.mongodb.DBEncoder encoder
         0: .line 637
            aload 0 /* this */
            aload 1 /* query */
            new com.mongodb.client.model.DBCollectionRemoveOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionRemoveOptions.<init>:()V
            aload 2 /* writeConcern */
            invokevirtual com.mongodb.client.model.DBCollectionRemoveOptions.writeConcern:(Lcom/mongodb/WriteConcern;)Lcom/mongodb/client/model/DBCollectionRemoveOptions;
            aload 3 /* encoder */
            invokevirtual com.mongodb.client.model.DBCollectionRemoveOptions.encoder:(Lcom/mongodb/DBEncoder;)Lcom/mongodb/client/model/DBCollectionRemoveOptions;
            invokevirtual com.mongodb.DBCollection.remove:(Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionRemoveOptions;)Lcom/mongodb/WriteResult;
            areturn
        end local 3 // com.mongodb.DBEncoder encoder
        end local 2 // com.mongodb.WriteConcern writeConcern
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lcom/mongodb/DBCollection;
            0    1     1         query  Lcom/mongodb/DBObject;
            0    1     2  writeConcern  Lcom/mongodb/WriteConcern;
            0    1     3       encoder  Lcom/mongodb/DBEncoder;
    MethodParameters:
              Name  Flags
      query         final
      writeConcern  final
      encoder       final

  public com.mongodb.WriteResult remove(com.mongodb.DBObject, com.mongodb.client.model.DBCollectionRemoveOptions);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionRemoveOptions;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=5, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.client.model.DBCollectionRemoveOptions options
         0: .line 654
            ldc "query"
            aload 1 /* query */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 655
            ldc "options"
            aload 2 /* options */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 656
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionRemoveOptions.getWriteConcern:()Lcom/mongodb/WriteConcern;
            ifnull 3
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionRemoveOptions.getWriteConcern:()Lcom/mongodb/WriteConcern;
            goto 4
      StackMap locals:
      StackMap stack:
         3: aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
      StackMap locals:
      StackMap stack: com.mongodb.WriteConcern
         4: astore 3 /* writeConcern */
        start local 3 // com.mongodb.WriteConcern writeConcern
         5: .line 657
            new com.mongodb.bulk.DeleteRequest
            dup
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionRemoveOptions.getEncoder:()Lcom/mongodb/DBEncoder;
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;Lcom/mongodb/DBEncoder;)Lorg/bson/BsonDocument;
            invokespecial com.mongodb.bulk.DeleteRequest.<init>:(Lorg/bson/BsonDocument;)V
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionRemoveOptions.getCollation:()Lcom/mongodb/client/model/Collation;
            invokevirtual com.mongodb.bulk.DeleteRequest.collation:(Lcom/mongodb/client/model/Collation;)Lcom/mongodb/bulk/DeleteRequest;
            astore 4 /* deleteRequest */
        start local 4 // com.mongodb.bulk.DeleteRequest deleteRequest
         6: .line 658
            aload 0 /* this */
            new com.mongodb.operation.DeleteOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            iconst_0
            aload 3 /* writeConcern */
            aload 0 /* this */
            getfield com.mongodb.DBCollection.retryWrites:Z
         7: .line 659
            aload 4 /* deleteRequest */
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            invokespecial com.mongodb.operation.DeleteOperation.<init>:(Lcom/mongodb/MongoNamespace;ZLcom/mongodb/WriteConcern;ZLjava/util/List;)V
         8: .line 658
            invokevirtual com.mongodb.DBCollection.executeWriteOperation:(Lcom/mongodb/operation/BaseWriteOperation;)Lcom/mongodb/WriteResult;
            areturn
        end local 4 // com.mongodb.bulk.DeleteRequest deleteRequest
        end local 3 // com.mongodb.WriteConcern writeConcern
        end local 2 // com.mongodb.client.model.DBCollectionRemoveOptions options
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0           this  Lcom/mongodb/DBCollection;
            0    9     1          query  Lcom/mongodb/DBObject;
            0    9     2        options  Lcom/mongodb/client/model/DBCollectionRemoveOptions;
            5    9     3   writeConcern  Lcom/mongodb/WriteConcern;
            6    9     4  deleteRequest  Lcom/mongodb/bulk/DeleteRequest;
    MethodParameters:
         Name  Flags
      query    final
      options  final

  public com.mongodb.DBCursor find(com.mongodb.DBObject, com.mongodb.DBObject, int, int, int);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;III)Lcom/mongodb/DBCursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=6
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject projection
        start local 3 // int numToSkip
        start local 4 // int batchSize
        start local 5 // int options
         0: .line 680
            new com.mongodb.DBCursor
            dup
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* projection */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokespecial com.mongodb.DBCursor.<init>:(Lcom/mongodb/DBCollection;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)V
            iload 4 /* batchSize */
            invokevirtual com.mongodb.DBCursor.batchSize:(I)Lcom/mongodb/DBCursor;
            iload 3 /* numToSkip */
            invokevirtual com.mongodb.DBCursor.skip:(I)Lcom/mongodb/DBCursor;
            iload 5 /* options */
            invokevirtual com.mongodb.DBCursor.setOptions:(I)Lcom/mongodb/DBCursor;
            areturn
        end local 5 // int options
        end local 4 // int batchSize
        end local 3 // int numToSkip
        end local 2 // com.mongodb.DBObject projection
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/mongodb/DBCollection;
            0    1     1       query  Lcom/mongodb/DBObject;
            0    1     2  projection  Lcom/mongodb/DBObject;
            0    1     3   numToSkip  I
            0    1     4   batchSize  I
            0    1     5     options  I
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
            Name  Flags
      query       final
      projection  final
      numToSkip   final
      batchSize   final
      options     final

  public com.mongodb.DBCursor find(com.mongodb.DBObject, com.mongodb.DBObject, int, int);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;II)Lcom/mongodb/DBCursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject projection
        start local 3 // int numToSkip
        start local 4 // int batchSize
         0: .line 698
            new com.mongodb.DBCursor
            dup
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* projection */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokespecial com.mongodb.DBCursor.<init>:(Lcom/mongodb/DBCollection;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)V
            iload 4 /* batchSize */
            invokevirtual com.mongodb.DBCursor.batchSize:(I)Lcom/mongodb/DBCursor;
            iload 3 /* numToSkip */
            invokevirtual com.mongodb.DBCursor.skip:(I)Lcom/mongodb/DBCursor;
            areturn
        end local 4 // int batchSize
        end local 3 // int numToSkip
        end local 2 // com.mongodb.DBObject projection
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/mongodb/DBCollection;
            0    1     1       query  Lcom/mongodb/DBObject;
            0    1     2  projection  Lcom/mongodb/DBObject;
            0    1     3   numToSkip  I
            0    1     4   batchSize  I
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
            Name  Flags
      query       final
      projection  final
      numToSkip   final
      batchSize   final

  public com.mongodb.DBCursor find(com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;)Lcom/mongodb/DBCursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
         0: .line 710
            new com.mongodb.DBCursor
            dup
            aload 0 /* this */
            aload 1 /* query */
            aconst_null
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokespecial com.mongodb.DBCursor.<init>:(Lcom/mongodb/DBCollection;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)V
            areturn
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/mongodb/DBCollection;
            0    1     1  query  Lcom/mongodb/DBObject;
    MethodParameters:
       Name  Flags
      query  final

  public com.mongodb.DBCursor find(com.mongodb.DBObject, com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;)Lcom/mongodb/DBCursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject projection
         0: .line 723
            new com.mongodb.DBCursor
            dup
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* projection */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokespecial com.mongodb.DBCursor.<init>:(Lcom/mongodb/DBCollection;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)V
            areturn
        end local 2 // com.mongodb.DBObject projection
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/mongodb/DBCollection;
            0    1     1       query  Lcom/mongodb/DBObject;
            0    1     2  projection  Lcom/mongodb/DBObject;
    MethodParameters:
            Name  Flags
      query       final
      projection  final

  public com.mongodb.DBCursor find();
    descriptor: ()Lcom/mongodb/DBCursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 733
            aload 0 /* this */
            new com.mongodb.BasicDBObject
            dup
            invokespecial com.mongodb.BasicDBObject.<init>:()V
            invokevirtual com.mongodb.DBCollection.find:(Lcom/mongodb/DBObject;)Lcom/mongodb/DBCursor;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  public com.mongodb.DBCursor find(com.mongodb.DBObject, com.mongodb.client.model.DBCollectionFindOptions);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionFindOptions;)Lcom/mongodb/DBCursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.client.model.DBCollectionFindOptions options
         0: .line 747
            new com.mongodb.DBCursor
            dup
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* options */
            invokespecial com.mongodb.DBCursor.<init>:(Lcom/mongodb/DBCollection;Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionFindOptions;)V
            areturn
        end local 2 // com.mongodb.client.model.DBCollectionFindOptions options
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/mongodb/DBCollection;
            0    1     1    query  Lcom/mongodb/DBObject;
            0    1     2  options  Lcom/mongodb/client/model/DBCollectionFindOptions;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
    MethodParameters:
         Name  Flags
      query    final
      options  final

  public com.mongodb.DBObject findOne();
    descriptor: ()Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 758
            aload 0 /* this */
            new com.mongodb.BasicDBObject
            dup
            invokespecial com.mongodb.BasicDBObject.<init>:()V
            invokevirtual com.mongodb.DBCollection.findOne:(Lcom/mongodb/DBObject;)Lcom/mongodb/DBObject;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()

  public com.mongodb.DBObject findOne(com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
         0: .line 770
            aload 0 /* this */
            aload 1 /* query */
            aconst_null
            aconst_null
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokevirtual com.mongodb.DBCollection.findOne:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)Lcom/mongodb/DBObject;
            areturn
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/mongodb/DBCollection;
            0    1     1  query  Lcom/mongodb/DBObject;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    MethodParameters:
       Name  Flags
      query  final

  public com.mongodb.DBObject findOne(com.mongodb.DBObject, com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject projection
         0: .line 783
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* projection */
            aconst_null
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokevirtual com.mongodb.DBCollection.findOne:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)Lcom/mongodb/DBObject;
            areturn
        end local 2 // com.mongodb.DBObject projection
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/mongodb/DBCollection;
            0    1     1       query  Lcom/mongodb/DBObject;
            0    1     2  projection  Lcom/mongodb/DBObject;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    MethodParameters:
            Name  Flags
      query       final
      projection  final

  public com.mongodb.DBObject findOne(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject projection
        start local 3 // com.mongodb.DBObject sort
         0: .line 797
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* projection */
            aload 3 /* sort */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokevirtual com.mongodb.DBCollection.findOne:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)Lcom/mongodb/DBObject;
            areturn
        end local 3 // com.mongodb.DBObject sort
        end local 2 // com.mongodb.DBObject projection
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/mongodb/DBCollection;
            0    1     1       query  Lcom/mongodb/DBObject;
            0    1     2  projection  Lcom/mongodb/DBObject;
            0    1     3        sort  Lcom/mongodb/DBObject;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    MethodParameters:
            Name  Flags
      query       final
      projection  final
      sort        final

  public com.mongodb.DBObject findOne(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.ReadPreference);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject projection
        start local 3 // com.mongodb.ReadPreference readPreference
         0: .line 811
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* projection */
            aconst_null
            aload 3 /* readPreference */
            invokevirtual com.mongodb.DBCollection.findOne:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)Lcom/mongodb/DBObject;
            areturn
        end local 3 // com.mongodb.ReadPreference readPreference
        end local 2 // com.mongodb.DBObject projection
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lcom/mongodb/DBCollection;
            0    1     1           query  Lcom/mongodb/DBObject;
            0    1     2      projection  Lcom/mongodb/DBObject;
            0    1     3  readPreference  Lcom/mongodb/ReadPreference;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    MethodParameters:
                Name  Flags
      query           final
      projection      final
      readPreference  final

  public com.mongodb.DBObject findOne(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.ReadPreference);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject projection
        start local 3 // com.mongodb.DBObject sort
        start local 4 // com.mongodb.ReadPreference readPreference
         0: .line 827
            aload 0 /* this */
            aload 1 /* query */
            ifnull 1
            aload 1 /* query */
            goto 2
      StackMap locals:
      StackMap stack: com.mongodb.DBCollection
         1: new com.mongodb.BasicDBObject
            dup
            invokespecial com.mongodb.BasicDBObject.<init>:()V
         2: .line 828
      StackMap locals: com.mongodb.DBCollection com.mongodb.DBObject com.mongodb.DBObject com.mongodb.DBObject com.mongodb.ReadPreference
      StackMap stack: com.mongodb.DBCollection com.mongodb.DBObject
            new com.mongodb.client.model.DBCollectionFindOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionFindOptions.<init>:()V
            aload 2 /* projection */
            invokevirtual com.mongodb.client.model.DBCollectionFindOptions.projection:(Lcom/mongodb/DBObject;)Lcom/mongodb/client/model/DBCollectionFindOptions;
            aload 3 /* sort */
            invokevirtual com.mongodb.client.model.DBCollectionFindOptions.sort:(Lcom/mongodb/DBObject;)Lcom/mongodb/client/model/DBCollectionFindOptions;
            aload 4 /* readPreference */
            invokevirtual com.mongodb.client.model.DBCollectionFindOptions.readPreference:(Lcom/mongodb/ReadPreference;)Lcom/mongodb/client/model/DBCollectionFindOptions;
         3: .line 827
            invokevirtual com.mongodb.DBCollection.findOne:(Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionFindOptions;)Lcom/mongodb/DBObject;
            areturn
        end local 4 // com.mongodb.ReadPreference readPreference
        end local 3 // com.mongodb.DBObject sort
        end local 2 // com.mongodb.DBObject projection
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lcom/mongodb/DBCollection;
            0    4     1           query  Lcom/mongodb/DBObject;
            0    4     2      projection  Lcom/mongodb/DBObject;
            0    4     3            sort  Lcom/mongodb/DBObject;
            0    4     4  readPreference  Lcom/mongodb/ReadPreference;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
        com.mongodb.lang.Nullable()
      2:
        com.mongodb.lang.Nullable()
      3:
    MethodParameters:
                Name  Flags
      query           final
      projection      final
      sort            final
      readPreference  final

  public com.mongodb.DBObject findOne(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.Object id
         0: .line 840
            aload 0 /* this */
            new com.mongodb.BasicDBObject
            dup
            ldc "_id"
            aload 1 /* id */
            invokespecial com.mongodb.BasicDBObject.<init>:(Ljava/lang/String;Ljava/lang/Object;)V
            new com.mongodb.client.model.DBCollectionFindOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionFindOptions.<init>:()V
            invokevirtual com.mongodb.DBCollection.findOne:(Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionFindOptions;)Lcom/mongodb/DBObject;
            areturn
        end local 1 // java.lang.Object id
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;
            0    1     1    id  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    MethodParameters:
      Name  Flags
      id    final

  public com.mongodb.DBObject findOne(java.lang.Object, com.mongodb.DBObject);
    descriptor: (Ljava/lang/Object;Lcom/mongodb/DBObject;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.Object id
        start local 2 // com.mongodb.DBObject projection
         0: .line 853
            aload 0 /* this */
            new com.mongodb.BasicDBObject
            dup
            ldc "_id"
            aload 1 /* id */
            invokespecial com.mongodb.BasicDBObject.<init>:(Ljava/lang/String;Ljava/lang/Object;)V
            new com.mongodb.client.model.DBCollectionFindOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionFindOptions.<init>:()V
            aload 2 /* projection */
            invokevirtual com.mongodb.client.model.DBCollectionFindOptions.projection:(Lcom/mongodb/DBObject;)Lcom/mongodb/client/model/DBCollectionFindOptions;
            invokevirtual com.mongodb.DBCollection.findOne:(Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionFindOptions;)Lcom/mongodb/DBObject;
            areturn
        end local 2 // com.mongodb.DBObject projection
        end local 1 // java.lang.Object id
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/mongodb/DBCollection;
            0    1     1          id  Ljava/lang/Object;
            0    1     2  projection  Lcom/mongodb/DBObject;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    MethodParameters:
            Name  Flags
      id          final
      projection  final

  public com.mongodb.DBObject findOne(com.mongodb.DBObject, com.mongodb.client.model.DBCollectionFindOptions);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionFindOptions;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.client.model.DBCollectionFindOptions findOptions
         0: .line 867
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* findOptions */
            invokevirtual com.mongodb.DBCollection.find:(Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionFindOptions;)Lcom/mongodb/DBCursor;
            invokevirtual com.mongodb.DBCursor.one:()Lcom/mongodb/DBObject;
            areturn
        end local 2 // com.mongodb.client.model.DBCollectionFindOptions findOptions
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/mongodb/DBCollection;
            0    1     1        query  Lcom/mongodb/DBObject;
            0    1     2  findOptions  Lcom/mongodb/client/model/DBCollectionFindOptions;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
    MethodParameters:
             Name  Flags
      query        final
      findOptions  final

  public long count();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 878
            aload 0 /* this */
            new com.mongodb.BasicDBObject
            dup
            invokespecial com.mongodb.BasicDBObject.<init>:()V
            new com.mongodb.client.model.DBCollectionCountOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionCountOptions.<init>:()V
            invokevirtual com.mongodb.DBCollection.getCount:(Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionCountOptions;)J
            lreturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  public long count(com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
         0: .line 890
            aload 0 /* this */
            aload 1 /* query */
            new com.mongodb.client.model.DBCollectionCountOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionCountOptions.<init>:()V
            invokevirtual com.mongodb.DBCollection.getCount:(Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionCountOptions;)J
            lreturn
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/mongodb/DBCollection;
            0    1     1  query  Lcom/mongodb/DBObject;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
    MethodParameters:
       Name  Flags
      query  final

  public long count(com.mongodb.DBObject, com.mongodb.ReadPreference);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.ReadPreference readPreference
         0: .line 903
            aload 0 /* this */
            aload 1 /* query */
            aconst_null
            aload 2 /* readPreference */
            invokevirtual com.mongodb.DBCollection.getCount:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)J
            lreturn
        end local 2 // com.mongodb.ReadPreference readPreference
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lcom/mongodb/DBCollection;
            0    1     1           query  Lcom/mongodb/DBObject;
            0    1     2  readPreference  Lcom/mongodb/ReadPreference;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
    MethodParameters:
                Name  Flags
      query           final
      readPreference  final

  public long count(com.mongodb.DBObject, com.mongodb.client.model.DBCollectionCountOptions);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionCountOptions;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.client.model.DBCollectionCountOptions options
         0: .line 917
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* options */
            invokevirtual com.mongodb.DBCollection.getCount:(Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionCountOptions;)J
            lreturn
        end local 2 // com.mongodb.client.model.DBCollectionCountOptions options
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/mongodb/DBCollection;
            0    1     1    query  Lcom/mongodb/DBObject;
            0    1     2  options  Lcom/mongodb/client/model/DBCollectionCountOptions;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
    MethodParameters:
         Name  Flags
      query    final
      options  final

  public long getCount();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 928
            aload 0 /* this */
            new com.mongodb.BasicDBObject
            dup
            invokespecial com.mongodb.BasicDBObject.<init>:()V
            new com.mongodb.client.model.DBCollectionCountOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionCountOptions.<init>:()V
            invokevirtual com.mongodb.DBCollection.getCount:(Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionCountOptions;)J
            lreturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  public long getCount(com.mongodb.ReadPreference);
    descriptor: (Lcom/mongodb/ReadPreference;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.ReadPreference readPreference
         0: .line 940
            aload 0 /* this */
            new com.mongodb.BasicDBObject
            dup
            invokespecial com.mongodb.BasicDBObject.<init>:()V
            aconst_null
            aload 1 /* readPreference */
            invokevirtual com.mongodb.DBCollection.getCount:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)J
            lreturn
        end local 1 // com.mongodb.ReadPreference readPreference
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lcom/mongodb/DBCollection;
            0    1     1  readPreference  Lcom/mongodb/ReadPreference;
    MethodParameters:
                Name  Flags
      readPreference  final

  public long getCount(com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
         0: .line 952
            aload 0 /* this */
            aload 1 /* query */
            new com.mongodb.client.model.DBCollectionCountOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionCountOptions.<init>:()V
            invokevirtual com.mongodb.DBCollection.getCount:(Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionCountOptions;)J
            lreturn
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/mongodb/DBCollection;
            0    1     1  query  Lcom/mongodb/DBObject;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
    MethodParameters:
       Name  Flags
      query  final

  public long getCount(com.mongodb.DBObject, com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject projection
         0: .line 967
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* projection */
            lconst_0
            lconst_0
            invokevirtual com.mongodb.DBCollection.getCount:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;JJ)J
            lreturn
        end local 2 // com.mongodb.DBObject projection
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/mongodb/DBCollection;
            0    1     1       query  Lcom/mongodb/DBObject;
            0    1     2  projection  Lcom/mongodb/DBObject;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
    MethodParameters:
            Name  Flags
      query       final
      projection  final

  public long getCount(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.ReadPreference);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=4, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject projection
        start local 3 // com.mongodb.ReadPreference readPreference
         0: .line 983
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* projection */
            lconst_0
            lconst_0
            aload 3 /* readPreference */
            invokevirtual com.mongodb.DBCollection.getCount:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;JJLcom/mongodb/ReadPreference;)J
            lreturn
        end local 3 // com.mongodb.ReadPreference readPreference
        end local 2 // com.mongodb.DBObject projection
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lcom/mongodb/DBCollection;
            0    1     1           query  Lcom/mongodb/DBObject;
            0    1     2      projection  Lcom/mongodb/DBObject;
            0    1     3  readPreference  Lcom/mongodb/ReadPreference;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
        com.mongodb.lang.Nullable()
      2:
    MethodParameters:
                Name  Flags
      query           final
      projection      final
      readPreference  final

  public long getCount(com.mongodb.DBObject, com.mongodb.DBObject, long, long);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=5
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject projection
        start local 3 // long limit
        start local 5 // long skip
         0: .line 1000
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* projection */
            lload 3 /* limit */
            lload 5 /* skip */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokevirtual com.mongodb.DBCollection.getCount:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;JJLcom/mongodb/ReadPreference;)J
            lreturn
        end local 5 // long skip
        end local 3 // long limit
        end local 2 // com.mongodb.DBObject projection
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/mongodb/DBCollection;
            0    1     1       query  Lcom/mongodb/DBObject;
            0    1     2  projection  Lcom/mongodb/DBObject;
            0    1     3       limit  J
            0    1     5        skip  J
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
        com.mongodb.lang.Nullable()
      2:
      3:
    MethodParameters:
            Name  Flags
      query       final
      projection  final
      limit       final
      skip        final

  public long getCount(com.mongodb.DBObject, com.mongodb.DBObject, long, long, com.mongodb.ReadPreference);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;JJLcom/mongodb/ReadPreference;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=6
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject projection
        start local 3 // long limit
        start local 5 // long skip
        start local 7 // com.mongodb.ReadPreference readPreference
         0: .line 1019
            aload 0 /* this */
            aload 1 /* query */
            new com.mongodb.client.model.DBCollectionCountOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionCountOptions.<init>:()V
            lload 3 /* limit */
            invokevirtual com.mongodb.client.model.DBCollectionCountOptions.limit:(J)Lcom/mongodb/client/model/DBCollectionCountOptions;
            lload 5 /* skip */
            invokevirtual com.mongodb.client.model.DBCollectionCountOptions.skip:(J)Lcom/mongodb/client/model/DBCollectionCountOptions;
            aload 7 /* readPreference */
            invokevirtual com.mongodb.client.model.DBCollectionCountOptions.readPreference:(Lcom/mongodb/ReadPreference;)Lcom/mongodb/client/model/DBCollectionCountOptions;
            invokevirtual com.mongodb.DBCollection.getCount:(Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionCountOptions;)J
            lreturn
        end local 7 // com.mongodb.ReadPreference readPreference
        end local 5 // long skip
        end local 3 // long limit
        end local 2 // com.mongodb.DBObject projection
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lcom/mongodb/DBCollection;
            0    1     1           query  Lcom/mongodb/DBObject;
            0    1     2      projection  Lcom/mongodb/DBObject;
            0    1     3           limit  J
            0    1     5            skip  J
            0    1     7  readPreference  Lcom/mongodb/ReadPreference;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
        com.mongodb.lang.Nullable()
      2:
      3:
      4:
    MethodParameters:
                Name  Flags
      query           final
      projection      final
      limit           final
      skip            final
      readPreference  final

  public long getCount(com.mongodb.DBObject, com.mongodb.client.model.DBCollectionCountOptions);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionCountOptions;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.client.model.DBCollectionCountOptions options
         0: .line 1033
            ldc "countOptions"
            aload 2 /* options */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 1034
            new com.mongodb.operation.CountOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            invokespecial com.mongodb.operation.CountOperation.<init>:(Lcom/mongodb/MongoNamespace;)V
         2: .line 1035
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionCountOptions.getSkip:()I
            i2l
            invokevirtual com.mongodb.operation.CountOperation.skip:(J)Lcom/mongodb/operation/CountOperation;
         3: .line 1036
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionCountOptions.getLimit:()I
            i2l
            invokevirtual com.mongodb.operation.CountOperation.limit:(J)Lcom/mongodb/operation/CountOperation;
         4: .line 1037
            aload 2 /* options */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.client.model.DBCollectionCountOptions.getMaxTime:(Ljava/util/concurrent/TimeUnit;)J
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.operation.CountOperation.maxTime:(JLjava/util/concurrent/TimeUnit;)Lcom/mongodb/operation/CountOperation;
         5: .line 1038
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionCountOptions.getCollation:()Lcom/mongodb/client/model/Collation;
            invokevirtual com.mongodb.operation.CountOperation.collation:(Lcom/mongodb/client/model/Collation;)Lcom/mongodb/operation/CountOperation;
         6: .line 1039
            aload 0 /* this */
            getfield com.mongodb.DBCollection.retryReads:Z
            invokevirtual com.mongodb.operation.CountOperation.retryReads:(Z)Lcom/mongodb/operation/CountOperation;
         7: .line 1034
            astore 3 /* operation */
        start local 3 // com.mongodb.operation.CountOperation operation
         8: .line 1040
            aload 1 /* query */
            ifnull 10
         9: .line 1041
            aload 3 /* operation */
            aload 0 /* this */
            aload 1 /* query */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.CountOperation.filter:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/CountOperation;
            pop
        10: .line 1043
      StackMap locals: com.mongodb.operation.CountOperation
      StackMap stack:
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionCountOptions.getHint:()Lcom/mongodb/DBObject;
            astore 4 /* hint */
        start local 4 // com.mongodb.DBObject hint
        11: .line 1044
            aload 4 /* hint */
            ifnull 14
        12: .line 1045
            aload 3 /* operation */
            aload 0 /* this */
            aload 4 /* hint */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.CountOperation.hint:(Lorg/bson/BsonValue;)Lcom/mongodb/operation/CountOperation;
            pop
        13: .line 1046
            goto 17
        14: .line 1047
      StackMap locals: com.mongodb.DBObject
      StackMap stack:
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionCountOptions.getHintString:()Ljava/lang/String;
            astore 5 /* hintString */
        start local 5 // java.lang.String hintString
        15: .line 1048
            aload 5 /* hintString */
            ifnull 17
        16: .line 1049
            aload 3 /* operation */
            new org.bson.BsonString
            dup
            aload 5 /* hintString */
            invokespecial org.bson.BsonString.<init>:(Ljava/lang/String;)V
            invokevirtual com.mongodb.operation.CountOperation.hint:(Lorg/bson/BsonValue;)Lcom/mongodb/operation/CountOperation;
            pop
        end local 5 // java.lang.String hintString
        17: .line 1052
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionCountOptions.getReadPreference:()Lcom/mongodb/ReadPreference;
            astore 5 /* optionsReadPreference */
        start local 5 // com.mongodb.ReadPreference optionsReadPreference
        18: .line 1053
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionCountOptions.getReadConcern:()Lcom/mongodb/ReadConcern;
            astore 6 /* optionsReadConcern */
        start local 6 // com.mongodb.ReadConcern optionsReadConcern
        19: .line 1054
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            aload 3 /* operation */
            aload 5 /* optionsReadPreference */
            ifnull 20
            aload 5 /* optionsReadPreference */
            goto 21
      StackMap locals: com.mongodb.DBCollection com.mongodb.DBObject com.mongodb.client.model.DBCollectionCountOptions com.mongodb.operation.CountOperation com.mongodb.DBObject com.mongodb.ReadPreference com.mongodb.ReadConcern
      StackMap stack: com.mongodb.client.internal.OperationExecutor com.mongodb.operation.CountOperation
        20: aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
        21: .line 1055
      StackMap locals: com.mongodb.DBCollection com.mongodb.DBObject com.mongodb.client.model.DBCollectionCountOptions com.mongodb.operation.CountOperation com.mongodb.DBObject com.mongodb.ReadPreference com.mongodb.ReadConcern
      StackMap stack: com.mongodb.client.internal.OperationExecutor com.mongodb.operation.CountOperation com.mongodb.ReadPreference
            aload 6 /* optionsReadConcern */
            ifnull 22
            aload 6 /* optionsReadConcern */
            goto 23
      StackMap locals: com.mongodb.DBCollection com.mongodb.DBObject com.mongodb.client.model.DBCollectionCountOptions com.mongodb.operation.CountOperation com.mongodb.DBObject com.mongodb.ReadPreference com.mongodb.ReadConcern
      StackMap stack: com.mongodb.client.internal.OperationExecutor com.mongodb.operation.CountOperation com.mongodb.ReadPreference
        22: aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
        23: .line 1054
      StackMap locals: com.mongodb.DBCollection com.mongodb.DBObject com.mongodb.client.model.DBCollectionCountOptions com.mongodb.operation.CountOperation com.mongodb.DBObject com.mongodb.ReadPreference com.mongodb.ReadConcern
      StackMap stack: com.mongodb.client.internal.OperationExecutor com.mongodb.operation.CountOperation com.mongodb.ReadPreference com.mongodb.ReadConcern
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/ReadOperation;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            checkcast java.lang.Long
            invokevirtual java.lang.Long.longValue:()J
            lreturn
        end local 6 // com.mongodb.ReadConcern optionsReadConcern
        end local 5 // com.mongodb.ReadPreference optionsReadPreference
        end local 4 // com.mongodb.DBObject hint
        end local 3 // com.mongodb.operation.CountOperation operation
        end local 2 // com.mongodb.client.model.DBCollectionCountOptions options
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   24     0                   this  Lcom/mongodb/DBCollection;
            0   24     1                  query  Lcom/mongodb/DBObject;
            0   24     2                options  Lcom/mongodb/client/model/DBCollectionCountOptions;
            8   24     3              operation  Lcom/mongodb/operation/CountOperation;
           11   24     4                   hint  Lcom/mongodb/DBObject;
           15   17     5             hintString  Ljava/lang/String;
           18   24     5  optionsReadPreference  Lcom/mongodb/ReadPreference;
           19   24     6     optionsReadConcern  Lcom/mongodb/ReadConcern;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
    MethodParameters:
         Name  Flags
      query    final
      options  final

  public com.mongodb.DBCollection rename(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/mongodb/DBCollection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String newName
         0: .line 1067
            aload 0 /* this */
            aload 1 /* newName */
            iconst_0
            invokevirtual com.mongodb.DBCollection.rename:(Ljava/lang/String;Z)Lcom/mongodb/DBCollection;
            areturn
        end local 1 // java.lang.String newName
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/mongodb/DBCollection;
            0    1     1  newName  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      newName  final

  public com.mongodb.DBCollection rename(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Lcom/mongodb/DBCollection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=4, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String newName
        start local 2 // boolean dropTarget
         0: .line 1081
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            new com.mongodb.operation.RenameCollectionOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
         1: .line 1082
            new com.mongodb.MongoNamespace
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            invokevirtual com.mongodb.MongoNamespace.getDatabaseName:()Ljava/lang/String;
            aload 1 /* newName */
            invokespecial com.mongodb.MongoNamespace.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
            invokespecial com.mongodb.operation.RenameCollectionOperation.<init>:(Lcom/mongodb/MongoNamespace;Lcom/mongodb/MongoNamespace;Lcom/mongodb/WriteConcern;)V
         2: .line 1083
            iload 2 /* dropTarget */
            invokevirtual com.mongodb.operation.RenameCollectionOperation.dropTarget:(Z)Lcom/mongodb/operation/RenameCollectionOperation;
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
         3: .line 1081
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/WriteOperation;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            pop
         4: .line 1084
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getDB:()Lcom/mongodb/DB;
            aload 1 /* newName */
            invokevirtual com.mongodb.DB.getCollection:(Ljava/lang/String;)Lcom/mongodb/DBCollection;
         5: areturn
         6: .line 1085
      StackMap locals:
      StackMap stack: com.mongodb.MongoWriteConcernException
            astore 3 /* e */
        start local 3 // com.mongodb.MongoWriteConcernException e
         7: .line 1086
            aload 3 /* e */
            invokestatic com.mongodb.DBCollection.createWriteConcernException:(Lcom/mongodb/MongoWriteConcernException;)Lcom/mongodb/WriteConcernException;
            athrow
        end local 3 // com.mongodb.MongoWriteConcernException e
        end local 2 // boolean dropTarget
        end local 1 // java.lang.String newName
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lcom/mongodb/DBCollection;
            0    8     1     newName  Ljava/lang/String;
            0    8     2  dropTarget  Z
            7    8     3           e  Lcom/mongodb/MongoWriteConcernException;
      Exception table:
        from    to  target  type
           0     5       6  Class com.mongodb.MongoWriteConcernException
    MethodParameters:
            Name  Flags
      newName     final
      dropTarget  final

  public com.mongodb.DBObject group(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.DBObject, java.lang.String);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Ljava/lang/String;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject key
        start local 2 // com.mongodb.DBObject cond
        start local 3 // com.mongodb.DBObject initial
        start local 4 // java.lang.String reduce
         0: .line 1104
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* cond */
            aload 3 /* initial */
            aload 4 /* reduce */
            aconst_null
            invokevirtual com.mongodb.DBCollection.group:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/String;)Lcom/mongodb/DBObject;
            areturn
        end local 4 // java.lang.String reduce
        end local 3 // com.mongodb.DBObject initial
        end local 2 // com.mongodb.DBObject cond
        end local 1 // com.mongodb.DBObject key
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/mongodb/DBCollection;
            0    1     1      key  Lcom/mongodb/DBObject;
            0    1     2     cond  Lcom/mongodb/DBObject;
            0    1     3  initial  Lcom/mongodb/DBObject;
            0    1     4   reduce  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      key      final
      cond     final
      initial  final
      reduce   final

  public com.mongodb.DBObject group(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.DBObject, java.lang.String, java.lang.String);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/String;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=6
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject key
        start local 2 // com.mongodb.DBObject cond
        start local 3 // com.mongodb.DBObject initial
        start local 4 // java.lang.String reduce
        start local 5 // java.lang.String finalize
         0: .line 1123
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* cond */
            aload 3 /* initial */
            aload 4 /* reduce */
            aload 5 /* finalize */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokevirtual com.mongodb.DBCollection.group:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/String;Lcom/mongodb/ReadPreference;)Lcom/mongodb/DBObject;
            areturn
        end local 5 // java.lang.String finalize
        end local 4 // java.lang.String reduce
        end local 3 // com.mongodb.DBObject initial
        end local 2 // com.mongodb.DBObject cond
        end local 1 // com.mongodb.DBObject key
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/mongodb/DBCollection;
            0    1     1       key  Lcom/mongodb/DBObject;
            0    1     2      cond  Lcom/mongodb/DBObject;
            0    1     3   initial  Lcom/mongodb/DBObject;
            0    1     4    reduce  Ljava/lang/String;
            0    1     5  finalize  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        com.mongodb.lang.Nullable()
    MethodParameters:
          Name  Flags
      key       final
      cond      final
      initial   final
      reduce    final
      finalize  final

  public com.mongodb.DBObject group(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.DBObject, java.lang.String, java.lang.String, com.mongodb.ReadPreference);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/String;Lcom/mongodb/ReadPreference;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=7, args_size=7
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject key
        start local 2 // com.mongodb.DBObject cond
        start local 3 // com.mongodb.DBObject initial
        start local 4 // java.lang.String reduce
        start local 5 // java.lang.String finalize
        start local 6 // com.mongodb.ReadPreference readPreference
         0: .line 1143
            aload 0 /* this */
            new com.mongodb.GroupCommand
            dup
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* cond */
            aload 3 /* initial */
            aload 4 /* reduce */
            aload 5 /* finalize */
            invokespecial com.mongodb.GroupCommand.<init>:(Lcom/mongodb/DBCollection;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/String;)V
            aload 6 /* readPreference */
            invokevirtual com.mongodb.DBCollection.group:(Lcom/mongodb/GroupCommand;Lcom/mongodb/ReadPreference;)Lcom/mongodb/DBObject;
            areturn
        end local 6 // com.mongodb.ReadPreference readPreference
        end local 5 // java.lang.String finalize
        end local 4 // java.lang.String reduce
        end local 3 // com.mongodb.DBObject initial
        end local 2 // com.mongodb.DBObject cond
        end local 1 // com.mongodb.DBObject key
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lcom/mongodb/DBCollection;
            0    1     1             key  Lcom/mongodb/DBObject;
            0    1     2            cond  Lcom/mongodb/DBObject;
            0    1     3         initial  Lcom/mongodb/DBObject;
            0    1     4          reduce  Ljava/lang/String;
            0    1     5        finalize  Ljava/lang/String;
            0    1     6  readPreference  Lcom/mongodb/ReadPreference;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        com.mongodb.lang.Nullable()
      5:
    MethodParameters:
                Name  Flags
      key             final
      cond            final
      initial         final
      reduce          final
      finalize        final
      readPreference  final

  public com.mongodb.DBObject group(com.mongodb.GroupCommand);
    descriptor: (Lcom/mongodb/GroupCommand;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.GroupCommand cmd
         0: .line 1157
            aload 0 /* this */
            aload 1 /* cmd */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokevirtual com.mongodb.DBCollection.group:(Lcom/mongodb/GroupCommand;Lcom/mongodb/ReadPreference;)Lcom/mongodb/DBObject;
            areturn
        end local 1 // com.mongodb.GroupCommand cmd
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;
            0    1     1   cmd  Lcom/mongodb/GroupCommand;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
      Name  Flags
      cmd   final

  public com.mongodb.DBObject group(com.mongodb.GroupCommand, com.mongodb.ReadPreference);
    descriptor: (Lcom/mongodb/GroupCommand;Lcom/mongodb/ReadPreference;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.GroupCommand cmd
        start local 2 // com.mongodb.ReadPreference readPreference
         0: .line 1172
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            aload 1 /* cmd */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getDefaultDBObjectCodec:()Lcom/mongodb/DBObjectCodec;
            aload 0 /* this */
            getfield com.mongodb.DBCollection.retryReads:Z
            invokevirtual com.mongodb.GroupCommand.toOperation:(Lcom/mongodb/MongoNamespace;Lcom/mongodb/DBObjectCodec;Z)Lcom/mongodb/operation/GroupOperation;
            aload 2 /* readPreference */
         1: .line 1173
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
         2: .line 1172
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/ReadOperation;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            checkcast com.mongodb.operation.BatchCursor
            invokestatic com.mongodb.DBCollection.toDBList:(Lcom/mongodb/operation/BatchCursor;)Lcom/mongodb/BasicDBList;
            areturn
        end local 2 // com.mongodb.ReadPreference readPreference
        end local 1 // com.mongodb.GroupCommand cmd
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Lcom/mongodb/DBCollection;
            0    3     1             cmd  Lcom/mongodb/GroupCommand;
            0    3     2  readPreference  Lcom/mongodb/ReadPreference;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
                Name  Flags
      cmd             final
      readPreference  final

  public java.util.List distinct(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String fieldName
         0: .line 1184
            aload 0 /* this */
            aload 1 /* fieldName */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokevirtual com.mongodb.DBCollection.distinct:(Ljava/lang/String;Lcom/mongodb/ReadPreference;)Ljava/util/List;
            areturn
        end local 1 // java.lang.String fieldName
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/mongodb/DBCollection;
            0    1     1  fieldName  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      fieldName  final

  public java.util.List distinct(java.lang.String, com.mongodb.ReadPreference);
    descriptor: (Ljava/lang/String;Lcom/mongodb/ReadPreference;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String fieldName
        start local 2 // com.mongodb.ReadPreference readPreference
         0: .line 1196
            aload 0 /* this */
            aload 1 /* fieldName */
            new com.mongodb.BasicDBObject
            dup
            invokespecial com.mongodb.BasicDBObject.<init>:()V
            aload 2 /* readPreference */
            invokevirtual com.mongodb.DBCollection.distinct:(Ljava/lang/String;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)Ljava/util/List;
            areturn
        end local 2 // com.mongodb.ReadPreference readPreference
        end local 1 // java.lang.String fieldName
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lcom/mongodb/DBCollection;
            0    1     1       fieldName  Ljava/lang/String;
            0    1     2  readPreference  Lcom/mongodb/ReadPreference;
    MethodParameters:
                Name  Flags
      fieldName       final
      readPreference  final

  public java.util.List distinct(java.lang.String, com.mongodb.DBObject);
    descriptor: (Ljava/lang/String;Lcom/mongodb/DBObject;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String fieldName
        start local 2 // com.mongodb.DBObject query
         0: .line 1208
            aload 0 /* this */
            aload 1 /* fieldName */
            aload 2 /* query */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokevirtual com.mongodb.DBCollection.distinct:(Ljava/lang/String;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)Ljava/util/List;
            areturn
        end local 2 // com.mongodb.DBObject query
        end local 1 // java.lang.String fieldName
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/mongodb/DBCollection;
            0    1     1  fieldName  Ljava/lang/String;
            0    1     2      query  Lcom/mongodb/DBObject;
    MethodParameters:
           Name  Flags
      fieldName  final
      query      final

  public java.util.List distinct(java.lang.String, com.mongodb.DBObject, com.mongodb.ReadPreference);
    descriptor: (Ljava/lang/String;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String fieldName
        start local 2 // com.mongodb.DBObject query
        start local 3 // com.mongodb.ReadPreference readPreference
         0: .line 1221
            aload 0 /* this */
            aload 1 /* fieldName */
            new com.mongodb.client.model.DBCollectionDistinctOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionDistinctOptions.<init>:()V
            aload 2 /* query */
            invokevirtual com.mongodb.client.model.DBCollectionDistinctOptions.filter:(Lcom/mongodb/DBObject;)Lcom/mongodb/client/model/DBCollectionDistinctOptions;
            aload 3 /* readPreference */
            invokevirtual com.mongodb.client.model.DBCollectionDistinctOptions.readPreference:(Lcom/mongodb/ReadPreference;)Lcom/mongodb/client/model/DBCollectionDistinctOptions;
            invokevirtual com.mongodb.DBCollection.distinct:(Ljava/lang/String;Lcom/mongodb/client/model/DBCollectionDistinctOptions;)Ljava/util/List;
            areturn
        end local 3 // com.mongodb.ReadPreference readPreference
        end local 2 // com.mongodb.DBObject query
        end local 1 // java.lang.String fieldName
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lcom/mongodb/DBCollection;
            0    1     1       fieldName  Ljava/lang/String;
            0    1     2           query  Lcom/mongodb/DBObject;
            0    1     3  readPreference  Lcom/mongodb/ReadPreference;
    MethodParameters:
                Name  Flags
      fieldName       final
      query           final
      readPreference  final

  public java.util.List distinct(java.lang.String, com.mongodb.client.model.DBCollectionDistinctOptions);
    descriptor: (Ljava/lang/String;Lcom/mongodb/client/model/DBCollectionDistinctOptions;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String fieldName
        start local 2 // com.mongodb.client.model.DBCollectionDistinctOptions options
         0: .line 1235
            ldc "fieldName"
            aload 1 /* fieldName */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 1236
            new com.mongodb.DBCollection$1
            dup
            aload 0 /* this */
            aconst_null
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
         2: .line 1237
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionDistinctOptions.getReadConcern:()Lcom/mongodb/ReadConcern;
            ifnull 3
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionDistinctOptions.getReadConcern:()Lcom/mongodb/ReadConcern;
            goto 4
      StackMap locals: com.mongodb.DBCollection java.lang.String com.mongodb.client.model.DBCollectionDistinctOptions
      StackMap stack: new 1 new 1 com.mongodb.DBCollection null com.mongodb.client.internal.OperationExecutor
         3: aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
         4: .line 1238
      StackMap locals: com.mongodb.DBCollection java.lang.String com.mongodb.client.model.DBCollectionDistinctOptions
      StackMap stack: new 1 new 1 com.mongodb.DBCollection null com.mongodb.client.internal.OperationExecutor com.mongodb.ReadConcern
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionDistinctOptions.getReadPreference:()Lcom/mongodb/ReadPreference;
            ifnull 5
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionDistinctOptions.getReadPreference:()Lcom/mongodb/ReadPreference;
            goto 6
      StackMap locals: com.mongodb.DBCollection java.lang.String com.mongodb.client.model.DBCollectionDistinctOptions
      StackMap stack: new 1 new 1 com.mongodb.DBCollection null com.mongodb.client.internal.OperationExecutor com.mongodb.ReadConcern
         5: aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
         6: .line 1239
      StackMap locals: com.mongodb.DBCollection java.lang.String com.mongodb.client.model.DBCollectionDistinctOptions
      StackMap stack: new 1 new 1 com.mongodb.DBCollection null com.mongodb.client.internal.OperationExecutor com.mongodb.ReadConcern com.mongodb.ReadPreference
            aload 0 /* this */
            getfield com.mongodb.DBCollection.retryReads:Z
         7: .line 1236
            aload 1 /* fieldName */
            aload 2 /* options */
            invokespecial com.mongodb.DBCollection$1.<init>:(Lcom/mongodb/DBCollection;Lcom/mongodb/client/ClientSession;Lcom/mongodb/client/internal/OperationExecutor;Lcom/mongodb/ReadConcern;Lcom/mongodb/ReadPreference;ZLjava/lang/String;Lcom/mongodb/client/model/DBCollectionDistinctOptions;)V
         8: .line 1247
            new com.mongodb.DBCollection$2
            dup
            aload 0 /* this */
            invokespecial com.mongodb.DBCollection$2.<init>:(Lcom/mongodb/DBCollection;)V
            invokevirtual com.mongodb.DBCollection$1.map:(Lcom/mongodb/Function;)Lcom/mongodb/client/MongoIterable;
         9: .line 1257
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            invokeinterface com.mongodb.client.MongoIterable.into:(Ljava/util/Collection;)Ljava/util/Collection;
            checkcast java.util.List
        10: .line 1236
            areturn
        end local 2 // com.mongodb.client.model.DBCollectionDistinctOptions options
        end local 1 // java.lang.String fieldName
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lcom/mongodb/DBCollection;
            0   11     1  fieldName  Ljava/lang/String;
            0   11     2    options  Lcom/mongodb/client/model/DBCollectionDistinctOptions;
    MethodParameters:
           Name  Flags
      fieldName  final
      options    final

  public com.mongodb.MapReduceOutput mapReduce(java.lang.String, java.lang.String, java.lang.String, com.mongodb.DBObject);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/mongodb/DBObject;)Lcom/mongodb/MapReduceOutput;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=6, args_size=5
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String map
        start local 2 // java.lang.String reduce
        start local 3 // java.lang.String outputTarget
        start local 4 // com.mongodb.DBObject query
         0: .line 1272
            new com.mongodb.MapReduceCommand
            dup
            aload 0 /* this */
            aload 1 /* map */
            aload 2 /* reduce */
            aload 3 /* outputTarget */
            getstatic com.mongodb.MapReduceCommand$OutputType.REDUCE:Lcom/mongodb/MapReduceCommand$OutputType;
            aload 4 /* query */
            invokespecial com.mongodb.MapReduceCommand.<init>:(Lcom/mongodb/DBCollection;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/mongodb/MapReduceCommand$OutputType;Lcom/mongodb/DBObject;)V
            astore 5 /* command */
        start local 5 // com.mongodb.MapReduceCommand command
         1: .line 1273
            aload 0 /* this */
            aload 5 /* command */
            invokevirtual com.mongodb.DBCollection.mapReduce:(Lcom/mongodb/MapReduceCommand;)Lcom/mongodb/MapReduceOutput;
            areturn
        end local 5 // com.mongodb.MapReduceCommand command
        end local 4 // com.mongodb.DBObject query
        end local 3 // java.lang.String outputTarget
        end local 2 // java.lang.String reduce
        end local 1 // java.lang.String map
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lcom/mongodb/DBCollection;
            0    2     1           map  Ljava/lang/String;
            0    2     2        reduce  Ljava/lang/String;
            0    2     3  outputTarget  Ljava/lang/String;
            0    2     4         query  Lcom/mongodb/DBObject;
            1    2     5       command  Lcom/mongodb/MapReduceCommand;
    MethodParameters:
              Name  Flags
      map           final
      reduce        final
      outputTarget  final
      query         final

  public com.mongodb.MapReduceOutput mapReduce(java.lang.String, java.lang.String, java.lang.String, com.mongodb.MapReduceCommand$OutputType, com.mongodb.DBObject);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/mongodb/MapReduceCommand$OutputType;Lcom/mongodb/DBObject;)Lcom/mongodb/MapReduceOutput;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=6
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String map
        start local 2 // java.lang.String reduce
        start local 3 // java.lang.String outputTarget
        start local 4 // com.mongodb.MapReduceCommand$OutputType outputType
        start local 5 // com.mongodb.DBObject query
         0: .line 1289
            new com.mongodb.MapReduceCommand
            dup
            aload 0 /* this */
            aload 1 /* map */
            aload 2 /* reduce */
            aload 3 /* outputTarget */
            aload 4 /* outputType */
            aload 5 /* query */
            invokespecial com.mongodb.MapReduceCommand.<init>:(Lcom/mongodb/DBCollection;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/mongodb/MapReduceCommand$OutputType;Lcom/mongodb/DBObject;)V
            astore 6 /* command */
        start local 6 // com.mongodb.MapReduceCommand command
         1: .line 1290
            aload 0 /* this */
            aload 6 /* command */
            invokevirtual com.mongodb.DBCollection.mapReduce:(Lcom/mongodb/MapReduceCommand;)Lcom/mongodb/MapReduceOutput;
            areturn
        end local 6 // com.mongodb.MapReduceCommand command
        end local 5 // com.mongodb.DBObject query
        end local 4 // com.mongodb.MapReduceCommand$OutputType outputType
        end local 3 // java.lang.String outputTarget
        end local 2 // java.lang.String reduce
        end local 1 // java.lang.String map
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lcom/mongodb/DBCollection;
            0    2     1           map  Ljava/lang/String;
            0    2     2        reduce  Ljava/lang/String;
            0    2     3  outputTarget  Ljava/lang/String;
            0    2     4    outputType  Lcom/mongodb/MapReduceCommand$OutputType;
            0    2     5         query  Lcom/mongodb/DBObject;
            1    2     6       command  Lcom/mongodb/MapReduceCommand;
    MethodParameters:
              Name  Flags
      map           final
      reduce        final
      outputTarget  final
      outputType    final
      query         final

  public com.mongodb.MapReduceOutput mapReduce(java.lang.String, java.lang.String, java.lang.String, com.mongodb.MapReduceCommand$OutputType, com.mongodb.DBObject, com.mongodb.ReadPreference);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/mongodb/MapReduceCommand$OutputType;Lcom/mongodb/DBObject;Lcom/mongodb/ReadPreference;)Lcom/mongodb/MapReduceOutput;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=8, args_size=7
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String map
        start local 2 // java.lang.String reduce
        start local 3 // java.lang.String outputTarget
        start local 4 // com.mongodb.MapReduceCommand$OutputType outputType
        start local 5 // com.mongodb.DBObject query
        start local 6 // com.mongodb.ReadPreference readPreference
         0: .line 1309
            new com.mongodb.MapReduceCommand
            dup
            aload 0 /* this */
            aload 1 /* map */
            aload 2 /* reduce */
            aload 3 /* outputTarget */
            aload 4 /* outputType */
            aload 5 /* query */
            invokespecial com.mongodb.MapReduceCommand.<init>:(Lcom/mongodb/DBCollection;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/mongodb/MapReduceCommand$OutputType;Lcom/mongodb/DBObject;)V
            astore 7 /* command */
        start local 7 // com.mongodb.MapReduceCommand command
         1: .line 1310
            aload 7 /* command */
            aload 6 /* readPreference */
            invokevirtual com.mongodb.MapReduceCommand.setReadPreference:(Lcom/mongodb/ReadPreference;)V
         2: .line 1311
            aload 0 /* this */
            aload 7 /* command */
            invokevirtual com.mongodb.DBCollection.mapReduce:(Lcom/mongodb/MapReduceCommand;)Lcom/mongodb/MapReduceOutput;
            areturn
        end local 7 // com.mongodb.MapReduceCommand command
        end local 6 // com.mongodb.ReadPreference readPreference
        end local 5 // com.mongodb.DBObject query
        end local 4 // com.mongodb.MapReduceCommand$OutputType outputType
        end local 3 // java.lang.String outputTarget
        end local 2 // java.lang.String reduce
        end local 1 // java.lang.String map
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Lcom/mongodb/DBCollection;
            0    3     1             map  Ljava/lang/String;
            0    3     2          reduce  Ljava/lang/String;
            0    3     3    outputTarget  Ljava/lang/String;
            0    3     4      outputType  Lcom/mongodb/MapReduceCommand$OutputType;
            0    3     5           query  Lcom/mongodb/DBObject;
            0    3     6  readPreference  Lcom/mongodb/ReadPreference;
            1    3     7         command  Lcom/mongodb/MapReduceCommand;
    MethodParameters:
                Name  Flags
      map             final
      reduce          final
      outputTarget    final
      outputType      final
      query           final
      readPreference  final

  public com.mongodb.MapReduceOutput mapReduce(com.mongodb.MapReduceCommand);
    descriptor: (Lcom/mongodb/MapReduceCommand;)Lcom/mongodb/MapReduceOutput;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=10, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.MapReduceCommand command
         0: .line 1322
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getReadPreference:()Lcom/mongodb/ReadPreference;
            ifnonnull 1
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getReadPreference:()Lcom/mongodb/ReadPreference;
      StackMap locals:
      StackMap stack: com.mongodb.ReadPreference
         2: astore 2 /* readPreference */
        start local 2 // com.mongodb.ReadPreference readPreference
         3: .line 1323
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getScope:()Ljava/util/Map;
            astore 3 /* scope */
        start local 3 // java.util.Map scope
         4: .line 1324
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getJsMode:()Ljava/lang/Boolean;
            astore 4 /* jsMode */
        start local 4 // java.lang.Boolean jsMode
         5: .line 1325
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getOutputType:()Lcom/mongodb/MapReduceCommand$OutputType;
            getstatic com.mongodb.MapReduceCommand$OutputType.INLINE:Lcom/mongodb/MapReduceCommand$OutputType;
            if_acmpne 25
         6: .line 1328
            new com.mongodb.operation.MapReduceWithInlineResultsOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            new org.bson.BsonJavaScript
            dup
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getMap:()Ljava/lang/String;
            invokespecial org.bson.BsonJavaScript.<init>:(Ljava/lang/String;)V
         7: .line 1329
            new org.bson.BsonJavaScript
            dup
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getReduce:()Ljava/lang/String;
            invokespecial org.bson.BsonJavaScript.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getDefaultDBObjectCodec:()Lcom/mongodb/DBObjectCodec;
         8: .line 1328
            invokespecial com.mongodb.operation.MapReduceWithInlineResultsOperation.<init>:(Lcom/mongodb/MongoNamespace;Lorg/bson/BsonJavaScript;Lorg/bson/BsonJavaScript;Lorg/bson/codecs/Decoder;)V
         9: .line 1330
            aload 0 /* this */
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getQuery:()Lcom/mongodb/DBObject;
            invokevirtual com.mongodb.DBCollection.wrapAllowNull:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.MapReduceWithInlineResultsOperation.filter:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/MapReduceWithInlineResultsOperation;
        10: .line 1331
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getLimit:()I
            invokevirtual com.mongodb.operation.MapReduceWithInlineResultsOperation.limit:(I)Lcom/mongodb/operation/MapReduceWithInlineResultsOperation;
        11: .line 1332
            aload 1 /* command */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.MapReduceCommand.getMaxTime:(Ljava/util/concurrent/TimeUnit;)J
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.operation.MapReduceWithInlineResultsOperation.maxTime:(JLjava/util/concurrent/TimeUnit;)Lcom/mongodb/operation/MapReduceWithInlineResultsOperation;
        12: .line 1333
            aload 4 /* jsMode */
            ifnonnull 13
            iconst_0
            goto 14
      StackMap locals: com.mongodb.DBCollection com.mongodb.MapReduceCommand com.mongodb.ReadPreference java.util.Map java.lang.Boolean
      StackMap stack: com.mongodb.operation.MapReduceWithInlineResultsOperation
        13: aload 4 /* jsMode */
            invokevirtual java.lang.Boolean.booleanValue:()Z
      StackMap locals: com.mongodb.DBCollection com.mongodb.MapReduceCommand com.mongodb.ReadPreference java.util.Map java.lang.Boolean
      StackMap stack: com.mongodb.operation.MapReduceWithInlineResultsOperation int
        14: invokevirtual com.mongodb.operation.MapReduceWithInlineResultsOperation.jsMode:(Z)Lcom/mongodb/operation/MapReduceWithInlineResultsOperation;
        15: .line 1334
            aload 0 /* this */
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getSort:()Lcom/mongodb/DBObject;
            invokevirtual com.mongodb.DBCollection.wrapAllowNull:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.MapReduceWithInlineResultsOperation.sort:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/MapReduceWithInlineResultsOperation;
        16: .line 1335
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.isVerbose:()Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokevirtual com.mongodb.operation.MapReduceWithInlineResultsOperation.verbose:(Z)Lcom/mongodb/operation/MapReduceWithInlineResultsOperation;
        17: .line 1336
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getCollation:()Lcom/mongodb/client/model/Collation;
            invokevirtual com.mongodb.operation.MapReduceWithInlineResultsOperation.collation:(Lcom/mongodb/client/model/Collation;)Lcom/mongodb/operation/MapReduceWithInlineResultsOperation;
        18: .line 1327
            astore 5 /* operation */
        start local 5 // com.mongodb.operation.MapReduceWithInlineResultsOperation operation
        19: .line 1338
            aload 3 /* scope */
            ifnull 21
        20: .line 1339
            aload 5 /* operation */
            aload 0 /* this */
            new com.mongodb.BasicDBObject
            dup
            aload 3 /* scope */
            invokespecial com.mongodb.BasicDBObject.<init>:(Ljava/util/Map;)V
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.MapReduceWithInlineResultsOperation.scope:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/MapReduceWithInlineResultsOperation;
            pop
        21: .line 1341
      StackMap locals: com.mongodb.operation.MapReduceWithInlineResultsOperation
      StackMap stack:
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getFinalize:()Ljava/lang/String;
            ifnull 23
        22: .line 1342
            aload 5 /* operation */
            new org.bson.BsonJavaScript
            dup
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getFinalize:()Ljava/lang/String;
            invokespecial org.bson.BsonJavaScript.<init>:(Ljava/lang/String;)V
            invokevirtual com.mongodb.operation.MapReduceWithInlineResultsOperation.finalizeFunction:(Lorg/bson/BsonJavaScript;)Lcom/mongodb/operation/MapReduceWithInlineResultsOperation;
            pop
        23: .line 1344
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            aload 5 /* operation */
            aload 2 /* readPreference */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/ReadOperation;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            checkcast com.mongodb.operation.MapReduceBatchCursor
            astore 6 /* executionResult */
        start local 6 // com.mongodb.operation.MapReduceBatchCursor executionResult
        24: .line 1345
            new com.mongodb.MapReduceOutput
            dup
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.toDBObject:()Lcom/mongodb/DBObject;
            aload 6 /* executionResult */
            invokespecial com.mongodb.MapReduceOutput.<init>:(Lcom/mongodb/DBObject;Lcom/mongodb/operation/MapReduceBatchCursor;)V
            areturn
        end local 6 // com.mongodb.operation.MapReduceBatchCursor executionResult
        end local 5 // com.mongodb.operation.MapReduceWithInlineResultsOperation operation
        25: .line 1348
      StackMap locals:
      StackMap stack:
            invokestatic com.mongodb.DBCollection.$SWITCH_TABLE$com$mongodb$MapReduceCommand$OutputType:()[I
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getOutputType:()Lcom/mongodb/MapReduceCommand$OutputType;
            invokevirtual com.mongodb.MapReduceCommand$OutputType.ordinal:()I
            iaload
            tableswitch { // 1 - 3
                    1: 26
                    2: 28
                    3: 30
              default: 32
          }
        26: .line 1350
      StackMap locals:
      StackMap stack:
            ldc "replace"
            astore 5 /* action */
        start local 5 // java.lang.String action
        27: .line 1351
            goto 33
        end local 5 // java.lang.String action
        28: .line 1353
      StackMap locals:
      StackMap stack:
            ldc "merge"
            astore 5 /* action */
        start local 5 // java.lang.String action
        29: .line 1354
            goto 33
        end local 5 // java.lang.String action
        30: .line 1356
      StackMap locals:
      StackMap stack:
            ldc "reduce"
            astore 5 /* action */
        start local 5 // java.lang.String action
        31: .line 1357
            goto 33
        end local 5 // java.lang.String action
        32: .line 1359
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Unexpected output type"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        start local 5 // java.lang.String action
        33: .line 1363
      StackMap locals: java.lang.String
      StackMap stack:
            new com.mongodb.operation.MapReduceToCollectionOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
        34: .line 1364
            new org.bson.BsonJavaScript
            dup
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getMap:()Ljava/lang/String;
            invokespecial org.bson.BsonJavaScript.<init>:(Ljava/lang/String;)V
        35: .line 1365
            new org.bson.BsonJavaScript
            dup
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getReduce:()Ljava/lang/String;
            invokespecial org.bson.BsonJavaScript.<init>:(Ljava/lang/String;)V
        36: .line 1366
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getOutputTarget:()Ljava/lang/String;
        37: .line 1367
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
        38: .line 1363
            invokespecial com.mongodb.operation.MapReduceToCollectionOperation.<init>:(Lcom/mongodb/MongoNamespace;Lorg/bson/BsonJavaScript;Lorg/bson/BsonJavaScript;Ljava/lang/String;Lcom/mongodb/WriteConcern;)V
        39: .line 1368
            aload 0 /* this */
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getQuery:()Lcom/mongodb/DBObject;
            invokevirtual com.mongodb.DBCollection.wrapAllowNull:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.MapReduceToCollectionOperation.filter:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/MapReduceToCollectionOperation;
        40: .line 1369
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getLimit:()I
            invokevirtual com.mongodb.operation.MapReduceToCollectionOperation.limit:(I)Lcom/mongodb/operation/MapReduceToCollectionOperation;
        41: .line 1370
            aload 1 /* command */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.MapReduceCommand.getMaxTime:(Ljava/util/concurrent/TimeUnit;)J
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.operation.MapReduceToCollectionOperation.maxTime:(JLjava/util/concurrent/TimeUnit;)Lcom/mongodb/operation/MapReduceToCollectionOperation;
        42: .line 1371
            aload 4 /* jsMode */
            ifnonnull 43
            iconst_0
            goto 44
      StackMap locals:
      StackMap stack: com.mongodb.operation.MapReduceToCollectionOperation
        43: aload 4 /* jsMode */
            invokevirtual java.lang.Boolean.booleanValue:()Z
      StackMap locals: com.mongodb.DBCollection com.mongodb.MapReduceCommand com.mongodb.ReadPreference java.util.Map java.lang.Boolean java.lang.String
      StackMap stack: com.mongodb.operation.MapReduceToCollectionOperation int
        44: invokevirtual com.mongodb.operation.MapReduceToCollectionOperation.jsMode:(Z)Lcom/mongodb/operation/MapReduceToCollectionOperation;
        45: .line 1372
            aload 0 /* this */
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getSort:()Lcom/mongodb/DBObject;
            invokevirtual com.mongodb.DBCollection.wrapAllowNull:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.MapReduceToCollectionOperation.sort:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/MapReduceToCollectionOperation;
        46: .line 1373
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.isVerbose:()Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokevirtual com.mongodb.operation.MapReduceToCollectionOperation.verbose:(Z)Lcom/mongodb/operation/MapReduceToCollectionOperation;
        47: .line 1374
            aload 5 /* action */
            invokevirtual com.mongodb.operation.MapReduceToCollectionOperation.action:(Ljava/lang/String;)Lcom/mongodb/operation/MapReduceToCollectionOperation;
        48: .line 1375
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getOutputDB:()Ljava/lang/String;
            invokevirtual com.mongodb.operation.MapReduceToCollectionOperation.databaseName:(Ljava/lang/String;)Lcom/mongodb/operation/MapReduceToCollectionOperation;
        49: .line 1376
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getBypassDocumentValidation:()Ljava/lang/Boolean;
            invokevirtual com.mongodb.operation.MapReduceToCollectionOperation.bypassDocumentValidation:(Ljava/lang/Boolean;)Lcom/mongodb/operation/MapReduceToCollectionOperation;
        50: .line 1377
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getCollation:()Lcom/mongodb/client/model/Collation;
            invokevirtual com.mongodb.operation.MapReduceToCollectionOperation.collation:(Lcom/mongodb/client/model/Collation;)Lcom/mongodb/operation/MapReduceToCollectionOperation;
        51: .line 1362
            astore 6 /* operation */
        start local 6 // com.mongodb.operation.MapReduceToCollectionOperation operation
        52: .line 1379
            aload 3 /* scope */
            ifnull 54
        53: .line 1380
            aload 6 /* operation */
            aload 0 /* this */
            new com.mongodb.BasicDBObject
            dup
            aload 3 /* scope */
            invokespecial com.mongodb.BasicDBObject.<init>:(Ljava/util/Map;)V
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.MapReduceToCollectionOperation.scope:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/MapReduceToCollectionOperation;
            pop
        54: .line 1382
      StackMap locals: com.mongodb.operation.MapReduceToCollectionOperation
      StackMap stack:
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getFinalize:()Ljava/lang/String;
            ifnull 56
        55: .line 1383
            aload 6 /* operation */
            new org.bson.BsonJavaScript
            dup
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getFinalize:()Ljava/lang/String;
            invokespecial org.bson.BsonJavaScript.<init>:(Ljava/lang/String;)V
            invokevirtual com.mongodb.operation.MapReduceToCollectionOperation.finalizeFunction:(Lorg/bson/BsonJavaScript;)Lcom/mongodb/operation/MapReduceToCollectionOperation;
            pop
        56: .line 1386
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            aload 6 /* operation */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/WriteOperation;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            checkcast com.mongodb.operation.MapReduceStatistics
            astore 7 /* mapReduceStatistics */
        start local 7 // com.mongodb.operation.MapReduceStatistics mapReduceStatistics
        57: .line 1387
            aload 0 /* this */
            aload 1 /* command */
            invokevirtual com.mongodb.DBCollection.getMapReduceOutputCollection:(Lcom/mongodb/MapReduceCommand;)Lcom/mongodb/DBCollection;
            astore 8 /* mapReduceOutputCollection */
        start local 8 // com.mongodb.DBCollection mapReduceOutputCollection
        58: .line 1388
            aload 8 /* mapReduceOutputCollection */
            invokevirtual com.mongodb.DBCollection.find:()Lcom/mongodb/DBCursor;
            astore 9 /* executionResult */
        start local 9 // com.mongodb.DBCursor executionResult
        59: .line 1389
            new com.mongodb.MapReduceOutput
            dup
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.toDBObject:()Lcom/mongodb/DBObject;
            aload 9 /* executionResult */
            aload 7 /* mapReduceStatistics */
            aload 8 /* mapReduceOutputCollection */
            invokespecial com.mongodb.MapReduceOutput.<init>:(Lcom/mongodb/DBObject;Lcom/mongodb/DBCursor;Lcom/mongodb/operation/MapReduceStatistics;Lcom/mongodb/DBCollection;)V
        60: areturn
        end local 9 // com.mongodb.DBCursor executionResult
        end local 8 // com.mongodb.DBCollection mapReduceOutputCollection
        end local 7 // com.mongodb.operation.MapReduceStatistics mapReduceStatistics
        61: .line 1390
      StackMap locals:
      StackMap stack: com.mongodb.MongoWriteConcernException
            astore 7 /* e */
        start local 7 // com.mongodb.MongoWriteConcernException e
        62: .line 1391
            aload 7 /* e */
            invokestatic com.mongodb.DBCollection.createWriteConcernException:(Lcom/mongodb/MongoWriteConcernException;)Lcom/mongodb/WriteConcernException;
            athrow
        end local 7 // com.mongodb.MongoWriteConcernException e
        end local 6 // com.mongodb.operation.MapReduceToCollectionOperation operation
        end local 5 // java.lang.String action
        end local 4 // java.lang.Boolean jsMode
        end local 3 // java.util.Map scope
        end local 2 // com.mongodb.ReadPreference readPreference
        end local 1 // com.mongodb.MapReduceCommand command
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   63     0                       this  Lcom/mongodb/DBCollection;
            0   63     1                    command  Lcom/mongodb/MapReduceCommand;
            3   63     2             readPreference  Lcom/mongodb/ReadPreference;
            4   63     3                      scope  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            5   63     4                     jsMode  Ljava/lang/Boolean;
           19   25     5                  operation  Lcom/mongodb/operation/MapReduceWithInlineResultsOperation<Lcom/mongodb/DBObject;>;
           24   25     6            executionResult  Lcom/mongodb/operation/MapReduceBatchCursor<Lcom/mongodb/DBObject;>;
           27   28     5                     action  Ljava/lang/String;
           29   30     5                     action  Ljava/lang/String;
           31   32     5                     action  Ljava/lang/String;
           33   63     5                     action  Ljava/lang/String;
           52   63     6                  operation  Lcom/mongodb/operation/MapReduceToCollectionOperation;
           57   61     7        mapReduceStatistics  Lcom/mongodb/operation/MapReduceStatistics;
           58   61     8  mapReduceOutputCollection  Lcom/mongodb/DBCollection;
           59   61     9            executionResult  Lcom/mongodb/DBCursor;
           62   63     7                          e  Lcom/mongodb/MongoWriteConcernException;
      Exception table:
        from    to  target  type
          56    60      61  Class com.mongodb.MongoWriteConcernException
    MethodParameters:
         Name  Flags
      command  final

  private com.mongodb.DBCollection getMapReduceOutputCollection(com.mongodb.MapReduceCommand);
    descriptor: (Lcom/mongodb/MapReduceCommand;)Lcom/mongodb/DBCollection;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.MapReduceCommand command
         0: .line 1397
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getOutputDB:()Ljava/lang/String;
            astore 2 /* requestedDatabaseName */
        start local 2 // java.lang.String requestedDatabaseName
         1: .line 1398
            aload 2 /* requestedDatabaseName */
            ifnull 3
         2: .line 1399
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getDB:()Lcom/mongodb/DB;
            aload 2 /* requestedDatabaseName */
            invokevirtual com.mongodb.DB.getSisterDB:(Ljava/lang/String;)Lcom/mongodb/DB;
            goto 4
         3: .line 1400
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getDB:()Lcom/mongodb/DB;
         4: .line 1398
      StackMap locals:
      StackMap stack: com.mongodb.DB
            astore 3 /* database */
        start local 3 // com.mongodb.DB database
         5: .line 1401
            aload 3 /* database */
            aload 1 /* command */
            invokevirtual com.mongodb.MapReduceCommand.getOutputTargetNonNull:()Ljava/lang/String;
            invokevirtual com.mongodb.DB.getCollection:(Ljava/lang/String;)Lcom/mongodb/DBCollection;
            areturn
        end local 3 // com.mongodb.DB database
        end local 2 // java.lang.String requestedDatabaseName
        end local 1 // com.mongodb.MapReduceCommand command
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    6     0                   this  Lcom/mongodb/DBCollection;
            0    6     1                command  Lcom/mongodb/MapReduceCommand;
            1    6     2  requestedDatabaseName  Ljava/lang/String;
            5    6     3               database  Lcom/mongodb/DB;
    MethodParameters:
         Name  Flags
      command  final

  public com.mongodb.AggregationOutput aggregate(com.mongodb.DBObject, com.mongodb.DBObject[]);
    descriptor: (Lcom/mongodb/DBObject;[Lcom/mongodb/DBObject;)Lcom/mongodb/AggregationOutput;
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject firstOp
        start local 2 // com.mongodb.DBObject[] additionalOps
         0: .line 1417
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* pipeline */
        start local 3 // java.util.List pipeline
         1: .line 1418
            aload 3 /* pipeline */
            aload 1 /* firstOp */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 1419
            aload 3 /* pipeline */
            aload 2 /* additionalOps */
            invokestatic java.util.Collections.addAll:(Ljava/util/Collection;[Ljava/lang/Object;)Z
            pop
         3: .line 1420
            aload 0 /* this */
            aload 3 /* pipeline */
            invokevirtual com.mongodb.DBCollection.aggregate:(Ljava/util/List;)Lcom/mongodb/AggregationOutput;
            areturn
        end local 3 // java.util.List pipeline
        end local 2 // com.mongodb.DBObject[] additionalOps
        end local 1 // com.mongodb.DBObject firstOp
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lcom/mongodb/DBCollection;
            0    4     1        firstOp  Lcom/mongodb/DBObject;
            0    4     2  additionalOps  [Lcom/mongodb/DBObject;
            1    4     3       pipeline  Ljava/util/List<Lcom/mongodb/DBObject;>;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
               Name  Flags
      firstOp        final
      additionalOps  final

  public com.mongodb.AggregationOutput aggregate(java.util.List<? extends com.mongodb.DBObject>);
    descriptor: (Ljava/util/List;)Lcom/mongodb/AggregationOutput;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List pipeline
         0: .line 1434
            aload 0 /* this */
            aload 1 /* pipeline */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokevirtual com.mongodb.DBCollection.aggregate:(Ljava/util/List;Lcom/mongodb/ReadPreference;)Lcom/mongodb/AggregationOutput;
            areturn
        end local 1 // java.util.List pipeline
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/mongodb/DBCollection;
            0    1     1  pipeline  Ljava/util/List<+Lcom/mongodb/DBObject;>;
    Signature: (Ljava/util/List<+Lcom/mongodb/DBObject;>;)Lcom/mongodb/AggregationOutput;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
          Name  Flags
      pipeline  final

  public com.mongodb.AggregationOutput aggregate(java.util.List<? extends com.mongodb.DBObject>, com.mongodb.ReadPreference);
    descriptor: (Ljava/util/List;Lcom/mongodb/ReadPreference;)Lcom/mongodb/AggregationOutput;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List pipeline
        start local 2 // com.mongodb.ReadPreference readPreference
         0: .line 1450
            aload 0 /* this */
            aload 1 /* pipeline */
            invokestatic com.mongodb.AggregationOptions.builder:()Lcom/mongodb/AggregationOptions$Builder;
            invokevirtual com.mongodb.AggregationOptions$Builder.build:()Lcom/mongodb/AggregationOptions;
            aload 2 /* readPreference */
            iconst_0
            invokevirtual com.mongodb.DBCollection.aggregate:(Ljava/util/List;Lcom/mongodb/AggregationOptions;Lcom/mongodb/ReadPreference;Z)Lcom/mongodb/Cursor;
            astore 3 /* cursor */
        start local 3 // com.mongodb.Cursor cursor
         1: .line 1452
            aload 3 /* cursor */
            ifnonnull 3
         2: .line 1453
            new com.mongodb.AggregationOutput
            dup
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            invokespecial com.mongodb.AggregationOutput.<init>:(Ljava/util/List;)V
            areturn
         3: .line 1455
      StackMap locals: com.mongodb.Cursor
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 4 /* results */
        start local 4 // java.util.List results
         4: .line 1456
            goto 6
         5: .line 1457
      StackMap locals: java.util.List
      StackMap stack:
            aload 4 /* results */
            aload 3 /* cursor */
            invokeinterface com.mongodb.Cursor.next:()Ljava/lang/Object;
            checkcast com.mongodb.DBObject
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 1456
      StackMap locals:
      StackMap stack:
            aload 3 /* cursor */
            invokeinterface com.mongodb.Cursor.hasNext:()Z
            ifne 5
         7: .line 1459
            new com.mongodb.AggregationOutput
            dup
            aload 4 /* results */
            invokespecial com.mongodb.AggregationOutput.<init>:(Ljava/util/List;)V
            areturn
        end local 4 // java.util.List results
        end local 3 // com.mongodb.Cursor cursor
        end local 2 // com.mongodb.ReadPreference readPreference
        end local 1 // java.util.List pipeline
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Lcom/mongodb/DBCollection;
            0    8     1        pipeline  Ljava/util/List<+Lcom/mongodb/DBObject;>;
            0    8     2  readPreference  Lcom/mongodb/ReadPreference;
            1    8     3          cursor  Lcom/mongodb/Cursor;
            4    8     4         results  Ljava/util/List<Lcom/mongodb/DBObject;>;
    Signature: (Ljava/util/List<+Lcom/mongodb/DBObject;>;Lcom/mongodb/ReadPreference;)Lcom/mongodb/AggregationOutput;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
                Name  Flags
      pipeline        final
      readPreference  final

  public com.mongodb.Cursor aggregate(java.util.List<? extends com.mongodb.DBObject>, com.mongodb.AggregationOptions);
    descriptor: (Ljava/util/List;Lcom/mongodb/AggregationOptions;)Lcom/mongodb/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List pipeline
        start local 2 // com.mongodb.AggregationOptions options
         0: .line 1473
            aload 0 /* this */
            aload 1 /* pipeline */
            aload 2 /* options */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokevirtual com.mongodb.DBCollection.aggregate:(Ljava/util/List;Lcom/mongodb/AggregationOptions;Lcom/mongodb/ReadPreference;)Lcom/mongodb/Cursor;
            areturn
        end local 2 // com.mongodb.AggregationOptions options
        end local 1 // java.util.List pipeline
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/mongodb/DBCollection;
            0    1     1  pipeline  Ljava/util/List<+Lcom/mongodb/DBObject;>;
            0    1     2   options  Lcom/mongodb/AggregationOptions;
    Signature: (Ljava/util/List<+Lcom/mongodb/DBObject;>;Lcom/mongodb/AggregationOptions;)Lcom/mongodb/Cursor;
    MethodParameters:
          Name  Flags
      pipeline  final
      options   final

  public com.mongodb.Cursor aggregate(java.util.List<? extends com.mongodb.DBObject>, com.mongodb.AggregationOptions, com.mongodb.ReadPreference);
    descriptor: (Ljava/util/List;Lcom/mongodb/AggregationOptions;Lcom/mongodb/ReadPreference;)Lcom/mongodb/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List pipeline
        start local 2 // com.mongodb.AggregationOptions options
        start local 3 // com.mongodb.ReadPreference readPreference
         0: .line 1488
            aload 0 /* this */
            aload 1 /* pipeline */
            aload 2 /* options */
            aload 3 /* readPreference */
            iconst_1
            invokevirtual com.mongodb.DBCollection.aggregate:(Ljava/util/List;Lcom/mongodb/AggregationOptions;Lcom/mongodb/ReadPreference;Z)Lcom/mongodb/Cursor;
            astore 4 /* cursor */
        start local 4 // com.mongodb.Cursor cursor
         1: .line 1489
            aload 4 /* cursor */
            ifnonnull 3
         2: .line 1490
            new com.mongodb.MongoInternalException
            dup
            ldc "cursor can not be null in this context"
            invokespecial com.mongodb.MongoInternalException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 1492
      StackMap locals: com.mongodb.Cursor
      StackMap stack:
            aload 4 /* cursor */
            areturn
        end local 4 // com.mongodb.Cursor cursor
        end local 3 // com.mongodb.ReadPreference readPreference
        end local 2 // com.mongodb.AggregationOptions options
        end local 1 // java.util.List pipeline
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lcom/mongodb/DBCollection;
            0    4     1        pipeline  Ljava/util/List<+Lcom/mongodb/DBObject;>;
            0    4     2         options  Lcom/mongodb/AggregationOptions;
            0    4     3  readPreference  Lcom/mongodb/ReadPreference;
            1    4     4          cursor  Lcom/mongodb/Cursor;
    Signature: (Ljava/util/List<+Lcom/mongodb/DBObject;>;Lcom/mongodb/AggregationOptions;Lcom/mongodb/ReadPreference;)Lcom/mongodb/Cursor;
    MethodParameters:
                Name  Flags
      pipeline        final
      options         final
      readPreference  final

  private com.mongodb.Cursor aggregate(java.util.List<? extends com.mongodb.DBObject>, com.mongodb.AggregationOptions, com.mongodb.ReadPreference, boolean);
    descriptor: (Ljava/util/List;Lcom/mongodb/AggregationOptions;Lcom/mongodb/ReadPreference;Z)Lcom/mongodb/Cursor;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=5
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List pipeline
        start local 2 // com.mongodb.AggregationOptions options
        start local 3 // com.mongodb.ReadPreference readPreference
        start local 4 // boolean returnCursorForOutCollection
         0: .line 1499
            ldc "options"
            aload 2 /* options */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 1500
            aload 0 /* this */
            aload 1 /* pipeline */
            invokevirtual com.mongodb.DBCollection.preparePipeline:(Ljava/util/List;)Ljava/util/List;
            astore 5 /* stages */
        start local 5 // java.util.List stages
         2: .line 1502
            aload 5 /* stages */
            aload 5 /* stages */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.bson.BsonDocument
            ldc "$out"
            invokevirtual org.bson.BsonDocument.get:(Ljava/lang/Object;)Lorg/bson/BsonValue;
            astore 6 /* outCollection */
        start local 6 // org.bson.BsonValue outCollection
         3: .line 1504
            aload 6 /* outCollection */
            ifnull 21
         4: .line 1505
            new com.mongodb.operation.AggregateToCollectionOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            aload 5 /* stages */
         5: .line 1506
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
         6: .line 1505
            invokespecial com.mongodb.operation.AggregateToCollectionOperation.<init>:(Lcom/mongodb/MongoNamespace;Ljava/util/List;Lcom/mongodb/ReadConcern;Lcom/mongodb/WriteConcern;)V
         7: .line 1507
            aload 2 /* options */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.AggregationOptions.getMaxTime:(Ljava/util/concurrent/TimeUnit;)J
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.operation.AggregateToCollectionOperation.maxTime:(JLjava/util/concurrent/TimeUnit;)Lcom/mongodb/operation/AggregateToCollectionOperation;
         8: .line 1508
            aload 2 /* options */
            invokevirtual com.mongodb.AggregationOptions.getAllowDiskUse:()Ljava/lang/Boolean;
            invokevirtual com.mongodb.operation.AggregateToCollectionOperation.allowDiskUse:(Ljava/lang/Boolean;)Lcom/mongodb/operation/AggregateToCollectionOperation;
         9: .line 1509
            aload 2 /* options */
            invokevirtual com.mongodb.AggregationOptions.getBypassDocumentValidation:()Ljava/lang/Boolean;
            invokevirtual com.mongodb.operation.AggregateToCollectionOperation.bypassDocumentValidation:(Ljava/lang/Boolean;)Lcom/mongodb/operation/AggregateToCollectionOperation;
        10: .line 1510
            aload 2 /* options */
            invokevirtual com.mongodb.AggregationOptions.getCollation:()Lcom/mongodb/client/model/Collation;
            invokevirtual com.mongodb.operation.AggregateToCollectionOperation.collation:(Lcom/mongodb/client/model/Collation;)Lcom/mongodb/operation/AggregateToCollectionOperation;
        11: .line 1505
            astore 7 /* operation */
        start local 7 // com.mongodb.operation.AggregateToCollectionOperation operation
        12: .line 1512
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            aload 7 /* operation */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/WriteOperation;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            pop
        13: .line 1513
            iload 4 /* returnCursorForOutCollection */
            ifeq 18
        14: .line 1514
            new com.mongodb.DBCursor
            dup
            aload 0 /* this */
            getfield com.mongodb.DBCollection.database:Lcom/mongodb/DB;
            aload 6 /* outCollection */
            invokevirtual org.bson.BsonValue.asString:()Lorg/bson/BsonString;
            invokevirtual org.bson.BsonString.getValue:()Ljava/lang/String;
            invokevirtual com.mongodb.DB.getCollection:(Ljava/lang/String;)Lcom/mongodb/DBCollection;
            new com.mongodb.BasicDBObject
            dup
            invokespecial com.mongodb.BasicDBObject.<init>:()V
        15: .line 1515
            new com.mongodb.client.model.DBCollectionFindOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionFindOptions.<init>:()V
            invokestatic com.mongodb.ReadPreference.primary:()Lcom/mongodb/ReadPreference;
            invokevirtual com.mongodb.client.model.DBCollectionFindOptions.readPreference:(Lcom/mongodb/ReadPreference;)Lcom/mongodb/client/model/DBCollectionFindOptions;
            aload 2 /* options */
            invokevirtual com.mongodb.AggregationOptions.getCollation:()Lcom/mongodb/client/model/Collation;
            invokevirtual com.mongodb.client.model.DBCollectionFindOptions.collation:(Lcom/mongodb/client/model/Collation;)Lcom/mongodb/client/model/DBCollectionFindOptions;
        16: .line 1514
            invokespecial com.mongodb.DBCursor.<init>:(Lcom/mongodb/DBCollection;Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionFindOptions;)V
        17: areturn
        18: .line 1517
      StackMap locals: java.util.List org.bson.BsonValue com.mongodb.operation.AggregateToCollectionOperation
      StackMap stack:
            aconst_null
            areturn
        19: .line 1519
      StackMap locals:
      StackMap stack: com.mongodb.MongoWriteConcernException
            astore 8 /* e */
        start local 8 // com.mongodb.MongoWriteConcernException e
        20: .line 1520
            aload 8 /* e */
            invokestatic com.mongodb.DBCollection.createWriteConcernException:(Lcom/mongodb/MongoWriteConcernException;)Lcom/mongodb/WriteConcernException;
            athrow
        end local 8 // com.mongodb.MongoWriteConcernException e
        end local 7 // com.mongodb.operation.AggregateToCollectionOperation operation
        21: .line 1523
      StackMap locals:
      StackMap stack:
            new com.mongodb.operation.AggregateOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            aload 5 /* stages */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getDefaultDBObjectCodec:()Lcom/mongodb/DBObjectCodec;
            invokespecial com.mongodb.operation.AggregateOperation.<init>:(Lcom/mongodb/MongoNamespace;Ljava/util/List;Lorg/bson/codecs/Decoder;)V
        22: .line 1524
            aload 2 /* options */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.AggregationOptions.getMaxTime:(Ljava/util/concurrent/TimeUnit;)J
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.operation.AggregateOperation.maxTime:(JLjava/util/concurrent/TimeUnit;)Lcom/mongodb/operation/AggregateOperation;
        23: .line 1525
            aload 2 /* options */
            invokevirtual com.mongodb.AggregationOptions.getAllowDiskUse:()Ljava/lang/Boolean;
            invokevirtual com.mongodb.operation.AggregateOperation.allowDiskUse:(Ljava/lang/Boolean;)Lcom/mongodb/operation/AggregateOperation;
        24: .line 1526
            aload 2 /* options */
            invokevirtual com.mongodb.AggregationOptions.getBatchSize:()Ljava/lang/Integer;
            invokevirtual com.mongodb.operation.AggregateOperation.batchSize:(Ljava/lang/Integer;)Lcom/mongodb/operation/AggregateOperation;
        25: .line 1527
            aload 2 /* options */
            invokevirtual com.mongodb.AggregationOptions.getOutputMode:()Lcom/mongodb/AggregationOptions$OutputMode;
            getstatic com.mongodb.AggregationOptions$OutputMode.CURSOR:Lcom/mongodb/AggregationOptions$OutputMode;
            if_acmpne 26
            iconst_1
            goto 27
      StackMap locals:
      StackMap stack: com.mongodb.operation.AggregateOperation
        26: iconst_0
      StackMap locals: com.mongodb.DBCollection java.util.List com.mongodb.AggregationOptions com.mongodb.ReadPreference int java.util.List org.bson.BsonValue
      StackMap stack: com.mongodb.operation.AggregateOperation int
        27: invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual com.mongodb.operation.AggregateOperation.useCursor:(Ljava/lang/Boolean;)Lcom/mongodb/operation/AggregateOperation;
        28: .line 1528
            aload 2 /* options */
            invokevirtual com.mongodb.AggregationOptions.getCollation:()Lcom/mongodb/client/model/Collation;
            invokevirtual com.mongodb.operation.AggregateOperation.collation:(Lcom/mongodb/client/model/Collation;)Lcom/mongodb/operation/AggregateOperation;
        29: .line 1529
            aload 0 /* this */
            getfield com.mongodb.DBCollection.retryReads:Z
            invokevirtual com.mongodb.operation.AggregateOperation.retryReads:(Z)Lcom/mongodb/operation/AggregateOperation;
        30: .line 1523
            astore 7 /* operation */
        start local 7 // com.mongodb.operation.AggregateOperation operation
        31: .line 1530
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            aload 7 /* operation */
            aload 3 /* readPreference */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/ReadOperation;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            checkcast com.mongodb.operation.BatchCursor
            astore 8 /* cursor */
        start local 8 // com.mongodb.operation.BatchCursor cursor
        32: .line 1531
            new com.mongodb.MongoCursorAdapter
            dup
            new com.mongodb.client.internal.MongoBatchCursorAdapter
            dup
            aload 8 /* cursor */
            invokespecial com.mongodb.client.internal.MongoBatchCursorAdapter.<init>:(Lcom/mongodb/operation/BatchCursor;)V
            invokespecial com.mongodb.MongoCursorAdapter.<init>:(Lcom/mongodb/client/MongoCursor;)V
            areturn
        end local 8 // com.mongodb.operation.BatchCursor cursor
        end local 7 // com.mongodb.operation.AggregateOperation operation
        end local 6 // org.bson.BsonValue outCollection
        end local 5 // java.util.List stages
        end local 4 // boolean returnCursorForOutCollection
        end local 3 // com.mongodb.ReadPreference readPreference
        end local 2 // com.mongodb.AggregationOptions options
        end local 1 // java.util.List pipeline
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0   33     0                          this  Lcom/mongodb/DBCollection;
            0   33     1                      pipeline  Ljava/util/List<+Lcom/mongodb/DBObject;>;
            0   33     2                       options  Lcom/mongodb/AggregationOptions;
            0   33     3                readPreference  Lcom/mongodb/ReadPreference;
            0   33     4  returnCursorForOutCollection  Z
            2   33     5                        stages  Ljava/util/List<Lorg/bson/BsonDocument;>;
            3   33     6                 outCollection  Lorg/bson/BsonValue;
           12   21     7                     operation  Lcom/mongodb/operation/AggregateToCollectionOperation;
           20   21     8                             e  Lcom/mongodb/MongoWriteConcernException;
           31   33     7                     operation  Lcom/mongodb/operation/AggregateOperation<Lcom/mongodb/DBObject;>;
           32   33     8                        cursor  Lcom/mongodb/operation/BatchCursor<Lcom/mongodb/DBObject;>;
      Exception table:
        from    to  target  type
          12    17      19  Class com.mongodb.MongoWriteConcernException
    Signature: (Ljava/util/List<+Lcom/mongodb/DBObject;>;Lcom/mongodb/AggregationOptions;Lcom/mongodb/ReadPreference;Z)Lcom/mongodb/Cursor;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    MethodParameters:
                              Name  Flags
      pipeline                      final
      options                       final
      readPreference                final
      returnCursorForOutCollection  final

  public com.mongodb.CommandResult explainAggregate(java.util.List<? extends com.mongodb.DBObject>, com.mongodb.AggregationOptions);
    descriptor: (Ljava/util/List;Lcom/mongodb/AggregationOptions;)Lcom/mongodb/CommandResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List pipeline
        start local 2 // com.mongodb.AggregationOptions options
         0: .line 1546
            new com.mongodb.operation.AggregateOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            aload 0 /* this */
            aload 1 /* pipeline */
            invokevirtual com.mongodb.DBCollection.preparePipeline:(Ljava/util/List;)Ljava/util/List;
         1: .line 1547
            new org.bson.codecs.BsonDocumentCodec
            dup
            invokespecial org.bson.codecs.BsonDocumentCodec.<init>:()V
         2: .line 1546
            invokespecial com.mongodb.operation.AggregateOperation.<init>:(Lcom/mongodb/MongoNamespace;Ljava/util/List;Lorg/bson/codecs/Decoder;)V
         3: .line 1548
            aload 2 /* options */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.AggregationOptions.getMaxTime:(Ljava/util/concurrent/TimeUnit;)J
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.operation.AggregateOperation.maxTime:(JLjava/util/concurrent/TimeUnit;)Lcom/mongodb/operation/AggregateOperation;
         4: .line 1549
            aload 2 /* options */
            invokevirtual com.mongodb.AggregationOptions.getAllowDiskUse:()Ljava/lang/Boolean;
            invokevirtual com.mongodb.operation.AggregateOperation.allowDiskUse:(Ljava/lang/Boolean;)Lcom/mongodb/operation/AggregateOperation;
         5: .line 1550
            aload 2 /* options */
            invokevirtual com.mongodb.AggregationOptions.getCollation:()Lcom/mongodb/client/model/Collation;
            invokevirtual com.mongodb.operation.AggregateOperation.collation:(Lcom/mongodb/client/model/Collation;)Lcom/mongodb/operation/AggregateOperation;
         6: .line 1551
            aload 0 /* this */
            getfield com.mongodb.DBCollection.retryReads:Z
            invokevirtual com.mongodb.operation.AggregateOperation.retryReads:(Z)Lcom/mongodb/operation/AggregateOperation;
         7: .line 1546
            astore 3 /* operation */
        start local 3 // com.mongodb.operation.AggregateOperation operation
         8: .line 1552
            new com.mongodb.CommandResult
            dup
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            aload 3 /* operation */
            getstatic com.mongodb.ExplainVerbosity.QUERY_PLANNER:Lcom/mongodb/ExplainVerbosity;
            invokevirtual com.mongodb.operation.AggregateOperation.asExplainableOperation:(Lcom/mongodb/ExplainVerbosity;)Lcom/mongodb/operation/ReadOperation;
            invokestatic com.mongodb.ReadPreference.primaryPreferred:()Lcom/mongodb/ReadPreference;
         9: .line 1553
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
        10: .line 1552
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/ReadOperation;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            checkcast org.bson.BsonDocument
            invokespecial com.mongodb.CommandResult.<init>:(Lorg/bson/BsonDocument;)V
            areturn
        end local 3 // com.mongodb.operation.AggregateOperation operation
        end local 2 // com.mongodb.AggregationOptions options
        end local 1 // java.util.List pipeline
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lcom/mongodb/DBCollection;
            0   11     1   pipeline  Ljava/util/List<+Lcom/mongodb/DBObject;>;
            0   11     2    options  Lcom/mongodb/AggregationOptions;
            8   11     3  operation  Lcom/mongodb/operation/AggregateOperation<Lorg/bson/BsonDocument;>;
    Signature: (Ljava/util/List<+Lcom/mongodb/DBObject;>;Lcom/mongodb/AggregationOptions;)Lcom/mongodb/CommandResult;
    MethodParameters:
          Name  Flags
      pipeline  final
      options   final

  java.util.List<org.bson.BsonDocument> preparePipeline(java.util.List<? extends com.mongodb.DBObject>);
    descriptor: (Ljava/util/List;)Ljava/util/List;
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List pipeline
         0: .line 1558
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* stages */
        start local 2 // java.util.List stages
         1: .line 1559
            aload 1 /* pipeline */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: com.mongodb.DBCollection java.util.List java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.mongodb.DBObject
            astore 3 /* op */
        start local 3 // com.mongodb.DBObject op
         3: .line 1560
            aload 2 /* stages */
            aload 0 /* this */
            aload 3 /* op */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // com.mongodb.DBObject op
         4: .line 1559
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 1563
            aload 2 /* stages */
            areturn
        end local 2 // java.util.List stages
        end local 1 // java.util.List pipeline
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lcom/mongodb/DBCollection;
            0    6     1  pipeline  Ljava/util/List<+Lcom/mongodb/DBObject;>;
            1    6     2    stages  Ljava/util/List<Lorg/bson/BsonDocument;>;
            3    4     3        op  Lcom/mongodb/DBObject;
    Signature: (Ljava/util/List<+Lcom/mongodb/DBObject;>;)Ljava/util/List<Lorg/bson/BsonDocument;>;
    MethodParameters:
          Name  Flags
      pipeline  final

  public java.util.List<com.mongodb.Cursor> parallelScan(com.mongodb.ParallelScanOptions);
    descriptor: (Lcom/mongodb/ParallelScanOptions;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.ParallelScanOptions options
         0: .line 1580
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* cursors */
        start local 2 // java.util.List cursors
         1: .line 1581
            new com.mongodb.operation.ParallelCollectionScanOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
         2: .line 1582
            aload 1 /* options */
            invokevirtual com.mongodb.ParallelScanOptions.getNumCursors:()I
         3: .line 1583
            aload 0 /* this */
            getfield com.mongodb.DBCollection.objectCodec:Lcom/mongodb/CompoundDBObjectCodec;
         4: .line 1581
            invokespecial com.mongodb.operation.ParallelCollectionScanOperation.<init>:(Lcom/mongodb/MongoNamespace;ILorg/bson/codecs/Decoder;)V
         5: .line 1584
            aload 1 /* options */
            invokevirtual com.mongodb.ParallelScanOptions.getBatchSize:()I
            invokevirtual com.mongodb.operation.ParallelCollectionScanOperation.batchSize:(I)Lcom/mongodb/operation/ParallelCollectionScanOperation;
            aload 0 /* this */
            getfield com.mongodb.DBCollection.retryReads:Z
            invokevirtual com.mongodb.operation.ParallelCollectionScanOperation.retryReads:(Z)Lcom/mongodb/operation/ParallelCollectionScanOperation;
         6: .line 1581
            astore 3 /* operation */
        start local 3 // com.mongodb.operation.ParallelCollectionScanOperation operation
         7: .line 1585
            aload 1 /* options */
            invokevirtual com.mongodb.ParallelScanOptions.getReadPreference:()Lcom/mongodb/ReadPreference;
            astore 4 /* readPreferenceFromOptions */
        start local 4 // com.mongodb.ReadPreference readPreferenceFromOptions
         8: .line 1586
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            aload 3 /* operation */
         9: .line 1587
            aload 4 /* readPreferenceFromOptions */
            ifnull 10
            aload 4 /* readPreferenceFromOptions */
            goto 11
        10: .line 1588
      StackMap locals: com.mongodb.DBCollection com.mongodb.ParallelScanOptions java.util.List com.mongodb.operation.ParallelCollectionScanOperation com.mongodb.ReadPreference
      StackMap stack: com.mongodb.client.internal.OperationExecutor com.mongodb.operation.ParallelCollectionScanOperation
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
        11: .line 1589
      StackMap locals: com.mongodb.DBCollection com.mongodb.ParallelScanOptions java.util.List com.mongodb.operation.ParallelCollectionScanOperation com.mongodb.ReadPreference
      StackMap stack: com.mongodb.client.internal.OperationExecutor com.mongodb.operation.ParallelCollectionScanOperation com.mongodb.ReadPreference
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
        12: .line 1586
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/ReadOperation;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            checkcast java.util.List
            astore 5 /* mongoCursors */
        start local 5 // java.util.List mongoCursors
        13: .line 1591
            aload 5 /* mongoCursors */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 16
      StackMap locals: com.mongodb.DBCollection com.mongodb.ParallelScanOptions java.util.List com.mongodb.operation.ParallelCollectionScanOperation com.mongodb.ReadPreference java.util.List top java.util.Iterator
      StackMap stack:
        14: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.mongodb.operation.BatchCursor
            astore 6 /* mongoCursor */
        start local 6 // com.mongodb.operation.BatchCursor mongoCursor
        15: .line 1592
            aload 2 /* cursors */
            new com.mongodb.MongoCursorAdapter
            dup
            new com.mongodb.client.internal.MongoBatchCursorAdapter
            dup
            aload 6 /* mongoCursor */
            invokespecial com.mongodb.client.internal.MongoBatchCursorAdapter.<init>:(Lcom/mongodb/operation/BatchCursor;)V
            invokespecial com.mongodb.MongoCursorAdapter.<init>:(Lcom/mongodb/client/MongoCursor;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // com.mongodb.operation.BatchCursor mongoCursor
        16: .line 1591
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        17: .line 1594
            aload 2 /* cursors */
            areturn
        end local 5 // java.util.List mongoCursors
        end local 4 // com.mongodb.ReadPreference readPreferenceFromOptions
        end local 3 // com.mongodb.operation.ParallelCollectionScanOperation operation
        end local 2 // java.util.List cursors
        end local 1 // com.mongodb.ParallelScanOptions options
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   18     0                       this  Lcom/mongodb/DBCollection;
            0   18     1                    options  Lcom/mongodb/ParallelScanOptions;
            1   18     2                    cursors  Ljava/util/List<Lcom/mongodb/Cursor;>;
            7   18     3                  operation  Lcom/mongodb/operation/ParallelCollectionScanOperation<Lcom/mongodb/DBObject;>;
            8   18     4  readPreferenceFromOptions  Lcom/mongodb/ReadPreference;
           13   18     5               mongoCursors  Ljava/util/List<Lcom/mongodb/operation/BatchCursor<Lcom/mongodb/DBObject;>;>;
           15   16     6                mongoCursor  Lcom/mongodb/operation/BatchCursor<Lcom/mongodb/DBObject;>;
    Signature: (Lcom/mongodb/ParallelScanOptions;)Ljava/util/List<Lcom/mongodb/Cursor;>;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      options  final

  public java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 1603
            aload 0 /* this */
            getfield com.mongodb.DBCollection.name:Ljava/lang/String;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  public java.lang.String getFullName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 1613
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            invokevirtual com.mongodb.MongoNamespace.getFullName:()Ljava/lang/String;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  public com.mongodb.DBCollection getCollection(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/mongodb/DBCollection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String name
         0: .line 1630
            aload 0 /* this */
            getfield com.mongodb.DBCollection.database:Lcom/mongodb/DB;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.mongodb.DB.getCollection:(Ljava/lang/String;)Lcom/mongodb/DBCollection;
            areturn
        end local 1 // java.lang.String name
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;
            0    1     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void createIndex(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String name
         0: .line 1641
            aload 0 /* this */
            new com.mongodb.BasicDBObject
            dup
            aload 1 /* name */
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokespecial com.mongodb.BasicDBObject.<init>:(Ljava/lang/String;Ljava/lang/Object;)V
            invokevirtual com.mongodb.DBCollection.createIndex:(Lcom/mongodb/DBObject;)V
         1: .line 1642
            return
        end local 1 // java.lang.String name
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/DBCollection;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void createIndex(com.mongodb.DBObject, java.lang.String);
    descriptor: (Lcom/mongodb/DBObject;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject keys
        start local 2 // java.lang.String name
         0: .line 1653
            aload 0 /* this */
            aload 1 /* keys */
            aload 2 /* name */
            iconst_0
            invokevirtual com.mongodb.DBCollection.createIndex:(Lcom/mongodb/DBObject;Ljava/lang/String;Z)V
         1: .line 1654
            return
        end local 2 // java.lang.String name
        end local 1 // com.mongodb.DBObject keys
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/DBCollection;
            0    2     1  keys  Lcom/mongodb/DBObject;
            0    2     2  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      keys  final
      name  final

  public void createIndex(com.mongodb.DBObject, java.lang.String, boolean);
    descriptor: (Lcom/mongodb/DBObject;Ljava/lang/String;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject keys
        start local 2 // java.lang.String name
        start local 3 // boolean unique
         0: .line 1666
            new com.mongodb.BasicDBObject
            dup
            invokespecial com.mongodb.BasicDBObject.<init>:()V
            astore 4 /* options */
        start local 4 // com.mongodb.DBObject options
         1: .line 1667
            aload 2 /* name */
            ifnull 3
            aload 2 /* name */
            invokevirtual java.lang.String.length:()I
            ifle 3
         2: .line 1668
            aload 4 /* options */
            ldc "name"
            aload 2 /* name */
            invokeinterface com.mongodb.DBObject.put:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 1670
      StackMap locals: com.mongodb.DBObject
      StackMap stack:
            iload 3 /* unique */
            ifeq 5
         4: .line 1671
            aload 4 /* options */
            ldc "unique"
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            invokeinterface com.mongodb.DBObject.put:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 1673
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* keys */
            aload 4 /* options */
            invokevirtual com.mongodb.DBCollection.createIndex:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;)V
         6: .line 1674
            return
        end local 4 // com.mongodb.DBObject options
        end local 3 // boolean unique
        end local 2 // java.lang.String name
        end local 1 // com.mongodb.DBObject keys
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lcom/mongodb/DBCollection;
            0    7     1     keys  Lcom/mongodb/DBObject;
            0    7     2     name  Ljava/lang/String;
            0    7     3   unique  Z
            1    7     4  options  Lcom/mongodb/DBObject;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        com.mongodb.lang.Nullable()
      2:
    MethodParameters:
        Name  Flags
      keys    final
      name    final
      unique  final

  public void createIndex(com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject keys
         0: .line 1683
            aload 0 /* this */
            aload 1 /* keys */
            new com.mongodb.BasicDBObject
            dup
            invokespecial com.mongodb.BasicDBObject.<init>:()V
            invokevirtual com.mongodb.DBCollection.createIndex:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;)V
         1: .line 1684
            return
        end local 1 // com.mongodb.DBObject keys
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/DBCollection;
            0    2     1  keys  Lcom/mongodb/DBObject;
    MethodParameters:
      Name  Flags
      keys  final

  public void createIndex(com.mongodb.DBObject, com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject keys
        start local 2 // com.mongodb.DBObject options
         0: .line 1698
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            aload 0 /* this */
            aload 1 /* keys */
            aload 2 /* options */
            invokevirtual com.mongodb.DBCollection.createIndexOperation:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;)Lcom/mongodb/operation/CreateIndexesOperation;
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/WriteOperation;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            pop
         1: .line 1699
            goto 4
      StackMap locals:
      StackMap stack: com.mongodb.MongoWriteConcernException
         2: astore 3 /* e */
        start local 3 // com.mongodb.MongoWriteConcernException e
         3: .line 1700
            aload 3 /* e */
            invokestatic com.mongodb.DBCollection.createWriteConcernException:(Lcom/mongodb/MongoWriteConcernException;)Lcom/mongodb/WriteConcernException;
            athrow
        end local 3 // com.mongodb.MongoWriteConcernException e
         4: .line 1702
      StackMap locals:
      StackMap stack:
            return
        end local 2 // com.mongodb.DBObject options
        end local 1 // com.mongodb.DBObject keys
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lcom/mongodb/DBCollection;
            0    5     1     keys  Lcom/mongodb/DBObject;
            0    5     2  options  Lcom/mongodb/DBObject;
            3    4     3        e  Lcom/mongodb/MongoWriteConcernException;
      Exception table:
        from    to  target  type
           0     1       2  Class com.mongodb.MongoWriteConcernException
    MethodParameters:
         Name  Flags
      keys     final
      options  final

  public java.util.List<com.mongodb.DBObject> getHintFields();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 1714
            aload 0 /* this */
            getfield com.mongodb.DBCollection.hintFields:Ljava/util/List;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;
    Signature: ()Ljava/util/List<Lcom/mongodb/DBObject;>;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
      com.mongodb.lang.Nullable()

  public void setHintFields(java.util.List<? extends com.mongodb.DBObject>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List indexes
         0: .line 1726
            aload 0 /* this */
            new java.util.ArrayList
            dup
            aload 1 /* indexes */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            putfield com.mongodb.DBCollection.hintFields:Ljava/util/List;
         1: .line 1727
            return
        end local 1 // java.util.List indexes
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/mongodb/DBCollection;
            0    2     1  indexes  Ljava/util/List<+Lcom/mongodb/DBObject;>;
    Signature: (Ljava/util/List<+Lcom/mongodb/DBObject;>;)V
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      indexes  final

  public com.mongodb.DBObject findAndModify(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=4, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject sort
        start local 3 // com.mongodb.DBObject update
         0: .line 1744
            aload 0 /* this */
            aload 1 /* query */
            aconst_null
            aload 2 /* sort */
            iconst_0
            aload 3 /* update */
            iconst_0
            iconst_0
            invokevirtual com.mongodb.DBCollection.findAndModify:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZLcom/mongodb/DBObject;ZZ)Lcom/mongodb/DBObject;
            areturn
        end local 3 // com.mongodb.DBObject update
        end local 2 // com.mongodb.DBObject sort
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/mongodb/DBCollection;
            0    1     1   query  Lcom/mongodb/DBObject;
            0    1     2    sort  Lcom/mongodb/DBObject;
            0    1     3  update  Lcom/mongodb/DBObject;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
        com.mongodb.lang.Nullable()
      2:
    MethodParameters:
        Name  Flags
      query   final
      sort    final
      update  final

  public com.mongodb.DBObject findAndModify(com.mongodb.DBObject, com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject update
         0: .line 1761
            aload 0 /* this */
            aload 1 /* query */
            aconst_null
            aconst_null
            iconst_0
            aload 2 /* update */
            iconst_0
            iconst_0
            invokevirtual com.mongodb.DBCollection.findAndModify:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZLcom/mongodb/DBObject;ZZ)Lcom/mongodb/DBObject;
            areturn
        end local 2 // com.mongodb.DBObject update
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/mongodb/DBCollection;
            0    1     1   query  Lcom/mongodb/DBObject;
            0    1     2  update  Lcom/mongodb/DBObject;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
    MethodParameters:
        Name  Flags
      query   final
      update  final

  public com.mongodb.DBObject findAndRemove(com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
         0: .line 1776
            aload 0 /* this */
            aload 1 /* query */
            aconst_null
            aconst_null
            iconst_1
            aconst_null
            iconst_0
            iconst_0
            invokevirtual com.mongodb.DBCollection.findAndModify:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZLcom/mongodb/DBObject;ZZ)Lcom/mongodb/DBObject;
            areturn
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/mongodb/DBCollection;
            0    1     1  query  Lcom/mongodb/DBObject;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
    MethodParameters:
       Name  Flags
      query  final

  public com.mongodb.DBObject findAndModify(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.DBObject, boolean, com.mongodb.DBObject, boolean, boolean);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZLcom/mongodb/DBObject;ZZ)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=11, locals=8, args_size=8
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject fields
        start local 3 // com.mongodb.DBObject sort
        start local 4 // boolean remove
        start local 5 // com.mongodb.DBObject update
        start local 6 // boolean returnNew
        start local 7 // boolean upsert
         0: .line 1801
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* fields */
            aload 3 /* sort */
            iload 4 /* remove */
            aload 5 /* update */
            iload 6 /* returnNew */
            iload 7 /* upsert */
            lconst_0
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.DBCollection.findAndModify:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZLcom/mongodb/DBObject;ZZJLjava/util/concurrent/TimeUnit;)Lcom/mongodb/DBObject;
            areturn
        end local 7 // boolean upsert
        end local 6 // boolean returnNew
        end local 5 // com.mongodb.DBObject update
        end local 4 // boolean remove
        end local 3 // com.mongodb.DBObject sort
        end local 2 // com.mongodb.DBObject fields
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/mongodb/DBCollection;
            0    1     1      query  Lcom/mongodb/DBObject;
            0    1     2     fields  Lcom/mongodb/DBObject;
            0    1     3       sort  Lcom/mongodb/DBObject;
            0    1     4     remove  Z
            0    1     5     update  Lcom/mongodb/DBObject;
            0    1     6  returnNew  Z
            0    1     7     upsert  Z
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
        com.mongodb.lang.Nullable()
      2:
        com.mongodb.lang.Nullable()
      3:
      4:
        com.mongodb.lang.Nullable()
      5:
      6:
    MethodParameters:
           Name  Flags
      query      final
      fields     final
      sort       final
      remove     final
      update     final
      returnNew  final
      upsert     final

  public com.mongodb.DBObject findAndModify(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.DBObject, boolean, com.mongodb.DBObject, boolean, boolean, com.mongodb.WriteConcern);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZLcom/mongodb/DBObject;ZZLcom/mongodb/WriteConcern;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=12, locals=9, args_size=9
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject fields
        start local 3 // com.mongodb.DBObject sort
        start local 4 // boolean remove
        start local 5 // com.mongodb.DBObject update
        start local 6 // boolean returnNew
        start local 7 // boolean upsert
        start local 8 // com.mongodb.WriteConcern writeConcern
         0: .line 1828
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* fields */
            aload 3 /* sort */
            iload 4 /* remove */
            aload 5 /* update */
            iload 6 /* returnNew */
            iload 7 /* upsert */
            lconst_0
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            aload 8 /* writeConcern */
            invokevirtual com.mongodb.DBCollection.findAndModify:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZLcom/mongodb/DBObject;ZZJLjava/util/concurrent/TimeUnit;Lcom/mongodb/WriteConcern;)Lcom/mongodb/DBObject;
            areturn
        end local 8 // com.mongodb.WriteConcern writeConcern
        end local 7 // boolean upsert
        end local 6 // boolean returnNew
        end local 5 // com.mongodb.DBObject update
        end local 4 // boolean remove
        end local 3 // com.mongodb.DBObject sort
        end local 2 // com.mongodb.DBObject fields
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lcom/mongodb/DBCollection;
            0    1     1         query  Lcom/mongodb/DBObject;
            0    1     2        fields  Lcom/mongodb/DBObject;
            0    1     3          sort  Lcom/mongodb/DBObject;
            0    1     4        remove  Z
            0    1     5        update  Lcom/mongodb/DBObject;
            0    1     6     returnNew  Z
            0    1     7        upsert  Z
            0    1     8  writeConcern  Lcom/mongodb/WriteConcern;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
        com.mongodb.lang.Nullable()
      2:
        com.mongodb.lang.Nullable()
      3:
      4:
      5:
      6:
      7:
    MethodParameters:
              Name  Flags
      query         final
      fields        final
      sort          final
      remove        final
      update        final
      returnNew     final
      upsert        final
      writeConcern  final

  public com.mongodb.DBObject findAndModify(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.DBObject, boolean, com.mongodb.DBObject, boolean, boolean, long, java.util.concurrent.TimeUnit);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZLcom/mongodb/DBObject;ZZJLjava/util/concurrent/TimeUnit;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=12, locals=11, args_size=10
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject fields
        start local 3 // com.mongodb.DBObject sort
        start local 4 // boolean remove
        start local 5 // com.mongodb.DBObject update
        start local 6 // boolean returnNew
        start local 7 // boolean upsert
        start local 8 // long maxTime
        start local 10 // java.util.concurrent.TimeUnit maxTimeUnit
         0: .line 1858
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* fields */
            aload 3 /* sort */
            iload 4 /* remove */
            aload 5 /* update */
            iload 6 /* returnNew */
            iload 7 /* upsert */
            lload 8 /* maxTime */
            aload 10 /* maxTimeUnit */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
            invokevirtual com.mongodb.DBCollection.findAndModify:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZLcom/mongodb/DBObject;ZZJLjava/util/concurrent/TimeUnit;Lcom/mongodb/WriteConcern;)Lcom/mongodb/DBObject;
            areturn
        end local 10 // java.util.concurrent.TimeUnit maxTimeUnit
        end local 8 // long maxTime
        end local 7 // boolean upsert
        end local 6 // boolean returnNew
        end local 5 // com.mongodb.DBObject update
        end local 4 // boolean remove
        end local 3 // com.mongodb.DBObject sort
        end local 2 // com.mongodb.DBObject fields
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/mongodb/DBCollection;
            0    1     1        query  Lcom/mongodb/DBObject;
            0    1     2       fields  Lcom/mongodb/DBObject;
            0    1     3         sort  Lcom/mongodb/DBObject;
            0    1     4       remove  Z
            0    1     5       update  Lcom/mongodb/DBObject;
            0    1     6    returnNew  Z
            0    1     7       upsert  Z
            0    1     8      maxTime  J
            0    1    10  maxTimeUnit  Ljava/util/concurrent/TimeUnit;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
        com.mongodb.lang.Nullable()
      2:
        com.mongodb.lang.Nullable()
      3:
      4:
        com.mongodb.lang.Nullable()
      5:
      6:
      7:
      8:
    MethodParameters:
             Name  Flags
      query        final
      fields       final
      sort         final
      remove       final
      update       final
      returnNew    final
      upsert       final
      maxTime      final
      maxTimeUnit  final

  public com.mongodb.DBObject findAndModify(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.DBObject, boolean, com.mongodb.DBObject, boolean, boolean, long, java.util.concurrent.TimeUnit, com.mongodb.WriteConcern);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZLcom/mongodb/DBObject;ZZJLjava/util/concurrent/TimeUnit;Lcom/mongodb/WriteConcern;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=12, args_size=11
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject fields
        start local 3 // com.mongodb.DBObject sort
        start local 4 // boolean remove
        start local 5 // com.mongodb.DBObject update
        start local 6 // boolean returnNew
        start local 7 // boolean upsert
        start local 8 // long maxTime
        start local 10 // java.util.concurrent.TimeUnit maxTimeUnit
        start local 11 // com.mongodb.WriteConcern writeConcern
         0: .line 1891
            aload 0 /* this */
            aload 1 /* query */
            ifnull 1
            aload 1 /* query */
            goto 2
      StackMap locals:
      StackMap stack: com.mongodb.DBCollection
         1: new com.mongodb.BasicDBObject
            dup
            invokespecial com.mongodb.BasicDBObject.<init>:()V
      StackMap locals: com.mongodb.DBCollection com.mongodb.DBObject com.mongodb.DBObject com.mongodb.DBObject int com.mongodb.DBObject int int long java.util.concurrent.TimeUnit com.mongodb.WriteConcern
      StackMap stack: com.mongodb.DBCollection com.mongodb.DBObject
         2: new com.mongodb.client.model.DBCollectionFindAndModifyOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionFindAndModifyOptions.<init>:()V
         3: .line 1892
            aload 2 /* fields */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.projection:(Lcom/mongodb/DBObject;)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
         4: .line 1893
            aload 3 /* sort */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.sort:(Lcom/mongodb/DBObject;)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
         5: .line 1894
            iload 4 /* remove */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.remove:(Z)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
         6: .line 1895
            aload 5 /* update */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.update:(Lcom/mongodb/DBObject;)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
         7: .line 1896
            iload 6 /* returnNew */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.returnNew:(Z)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
         8: .line 1897
            iload 7 /* upsert */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.upsert:(Z)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
         9: .line 1898
            lload 8 /* maxTime */
            aload 10 /* maxTimeUnit */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.maxTime:(JLjava/util/concurrent/TimeUnit;)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
        10: .line 1899
            aload 11 /* writeConcern */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.writeConcern:(Lcom/mongodb/WriteConcern;)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
        11: .line 1891
            invokevirtual com.mongodb.DBCollection.findAndModify:(Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;)Lcom/mongodb/DBObject;
            areturn
        end local 11 // com.mongodb.WriteConcern writeConcern
        end local 10 // java.util.concurrent.TimeUnit maxTimeUnit
        end local 8 // long maxTime
        end local 7 // boolean upsert
        end local 6 // boolean returnNew
        end local 5 // com.mongodb.DBObject update
        end local 4 // boolean remove
        end local 3 // com.mongodb.DBObject sort
        end local 2 // com.mongodb.DBObject fields
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   12     0          this  Lcom/mongodb/DBCollection;
            0   12     1         query  Lcom/mongodb/DBObject;
            0   12     2        fields  Lcom/mongodb/DBObject;
            0   12     3          sort  Lcom/mongodb/DBObject;
            0   12     4        remove  Z
            0   12     5        update  Lcom/mongodb/DBObject;
            0   12     6     returnNew  Z
            0   12     7        upsert  Z
            0   12     8       maxTime  J
            0   12    10   maxTimeUnit  Ljava/util/concurrent/TimeUnit;
            0   12    11  writeConcern  Lcom/mongodb/WriteConcern;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
        com.mongodb.lang.Nullable()
      2:
        com.mongodb.lang.Nullable()
      3:
      4:
        com.mongodb.lang.Nullable()
      5:
      6:
      7:
      8:
      9:
    MethodParameters:
              Name  Flags
      query         final
      fields        final
      sort          final
      remove        final
      update        final
      returnNew     final
      upsert        final
      maxTime       final
      maxTimeUnit   final
      writeConcern  final

  public com.mongodb.DBObject findAndModify(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.DBObject, boolean, com.mongodb.DBObject, boolean, boolean, boolean, long, java.util.concurrent.TimeUnit);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZLcom/mongodb/DBObject;ZZZJLjava/util/concurrent/TimeUnit;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=13, locals=12, args_size=11
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject fields
        start local 3 // com.mongodb.DBObject sort
        start local 4 // boolean remove
        start local 5 // com.mongodb.DBObject update
        start local 6 // boolean returnNew
        start local 7 // boolean upsert
        start local 8 // boolean bypassDocumentValidation
        start local 9 // long maxTime
        start local 11 // java.util.concurrent.TimeUnit maxTimeUnit
         0: .line 1931
            aload 0 /* this */
            aload 1 /* query */
            aload 2 /* fields */
            aload 3 /* sort */
            iload 4 /* remove */
            aload 5 /* update */
            iload 6 /* returnNew */
            iload 7 /* upsert */
            iload 8 /* bypassDocumentValidation */
            lload 9 /* maxTime */
            aload 11 /* maxTimeUnit */
         1: .line 1932
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
         2: .line 1931
            invokevirtual com.mongodb.DBCollection.findAndModify:(Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZLcom/mongodb/DBObject;ZZZJLjava/util/concurrent/TimeUnit;Lcom/mongodb/WriteConcern;)Lcom/mongodb/DBObject;
            areturn
        end local 11 // java.util.concurrent.TimeUnit maxTimeUnit
        end local 9 // long maxTime
        end local 8 // boolean bypassDocumentValidation
        end local 7 // boolean upsert
        end local 6 // boolean returnNew
        end local 5 // com.mongodb.DBObject update
        end local 4 // boolean remove
        end local 3 // com.mongodb.DBObject sort
        end local 2 // com.mongodb.DBObject fields
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    3     0                      this  Lcom/mongodb/DBCollection;
            0    3     1                     query  Lcom/mongodb/DBObject;
            0    3     2                    fields  Lcom/mongodb/DBObject;
            0    3     3                      sort  Lcom/mongodb/DBObject;
            0    3     4                    remove  Z
            0    3     5                    update  Lcom/mongodb/DBObject;
            0    3     6                 returnNew  Z
            0    3     7                    upsert  Z
            0    3     8  bypassDocumentValidation  Z
            0    3     9                   maxTime  J
            0    3    11               maxTimeUnit  Ljava/util/concurrent/TimeUnit;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        com.mongodb.lang.Nullable()
      5:
      6:
      7:
      8:
      9:
    MethodParameters:
                          Name  Flags
      query                     final
      fields                    final
      sort                      final
      remove                    final
      update                    final
      returnNew                 final
      upsert                    final
      bypassDocumentValidation  final
      maxTime                   final
      maxTimeUnit               final

  public com.mongodb.DBObject findAndModify(com.mongodb.DBObject, com.mongodb.DBObject, com.mongodb.DBObject, boolean, com.mongodb.DBObject, boolean, boolean, boolean, long, java.util.concurrent.TimeUnit, com.mongodb.WriteConcern);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;ZLcom/mongodb/DBObject;ZZZJLjava/util/concurrent/TimeUnit;Lcom/mongodb/WriteConcern;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=13, args_size=12
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.DBObject fields
        start local 3 // com.mongodb.DBObject sort
        start local 4 // boolean remove
        start local 5 // com.mongodb.DBObject update
        start local 6 // boolean returnNew
        start local 7 // boolean upsert
        start local 8 // boolean bypassDocumentValidation
        start local 9 // long maxTime
        start local 11 // java.util.concurrent.TimeUnit maxTimeUnit
        start local 12 // com.mongodb.WriteConcern writeConcern
         0: .line 1965
            aload 0 /* this */
            aload 1 /* query */
            ifnull 1
            aload 1 /* query */
            goto 2
      StackMap locals:
      StackMap stack: com.mongodb.DBCollection
         1: new com.mongodb.BasicDBObject
            dup
            invokespecial com.mongodb.BasicDBObject.<init>:()V
      StackMap locals: com.mongodb.DBCollection com.mongodb.DBObject com.mongodb.DBObject com.mongodb.DBObject int com.mongodb.DBObject int int int long java.util.concurrent.TimeUnit com.mongodb.WriteConcern
      StackMap stack: com.mongodb.DBCollection com.mongodb.DBObject
         2: new com.mongodb.client.model.DBCollectionFindAndModifyOptions
            dup
            invokespecial com.mongodb.client.model.DBCollectionFindAndModifyOptions.<init>:()V
         3: .line 1966
            aload 2 /* fields */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.projection:(Lcom/mongodb/DBObject;)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
         4: .line 1967
            aload 3 /* sort */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.sort:(Lcom/mongodb/DBObject;)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
         5: .line 1968
            iload 4 /* remove */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.remove:(Z)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
         6: .line 1969
            aload 5 /* update */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.update:(Lcom/mongodb/DBObject;)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
         7: .line 1970
            iload 6 /* returnNew */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.returnNew:(Z)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
         8: .line 1971
            iload 7 /* upsert */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.upsert:(Z)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
         9: .line 1972
            iload 8 /* bypassDocumentValidation */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.bypassDocumentValidation:(Ljava/lang/Boolean;)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
        10: .line 1973
            lload 9 /* maxTime */
            aload 11 /* maxTimeUnit */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.maxTime:(JLjava/util/concurrent/TimeUnit;)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
        11: .line 1974
            aload 12 /* writeConcern */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.writeConcern:(Lcom/mongodb/WriteConcern;)Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
        12: .line 1965
            invokevirtual com.mongodb.DBCollection.findAndModify:(Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;)Lcom/mongodb/DBObject;
            areturn
        end local 12 // com.mongodb.WriteConcern writeConcern
        end local 11 // java.util.concurrent.TimeUnit maxTimeUnit
        end local 9 // long maxTime
        end local 8 // boolean bypassDocumentValidation
        end local 7 // boolean upsert
        end local 6 // boolean returnNew
        end local 5 // com.mongodb.DBObject update
        end local 4 // boolean remove
        end local 3 // com.mongodb.DBObject sort
        end local 2 // com.mongodb.DBObject fields
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   13     0                      this  Lcom/mongodb/DBCollection;
            0   13     1                     query  Lcom/mongodb/DBObject;
            0   13     2                    fields  Lcom/mongodb/DBObject;
            0   13     3                      sort  Lcom/mongodb/DBObject;
            0   13     4                    remove  Z
            0   13     5                    update  Lcom/mongodb/DBObject;
            0   13     6                 returnNew  Z
            0   13     7                    upsert  Z
            0   13     8  bypassDocumentValidation  Z
            0   13     9                   maxTime  J
            0   13    11               maxTimeUnit  Ljava/util/concurrent/TimeUnit;
            0   13    12              writeConcern  Lcom/mongodb/WriteConcern;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
        com.mongodb.lang.Nullable()
      2:
        com.mongodb.lang.Nullable()
      3:
      4:
        com.mongodb.lang.Nullable()
      5:
      6:
      7:
      8:
      9:
      10:
    MethodParameters:
                          Name  Flags
      query                     final
      fields                    final
      sort                      final
      remove                    final
      update                    final
      returnNew                 final
      upsert                    final
      bypassDocumentValidation  final
      maxTime                   final
      maxTimeUnit               final
      writeConcern              final

  public com.mongodb.DBObject findAndModify(com.mongodb.DBObject, com.mongodb.client.model.DBCollectionFindAndModifyOptions);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject query
        start local 2 // com.mongodb.client.model.DBCollectionFindAndModifyOptions options
         0: .line 1992
            ldc "query"
            aload 1 /* query */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 1993
            ldc "options"
            aload 2 /* options */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 1994
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getWriteConcern:()Lcom/mongodb/WriteConcern;
            astore 3 /* optionsWriteConcern */
        start local 3 // com.mongodb.WriteConcern optionsWriteConcern
         3: .line 1995
            aload 3 /* optionsWriteConcern */
            ifnull 4
            aload 3 /* optionsWriteConcern */
            goto 5
      StackMap locals: com.mongodb.WriteConcern
      StackMap stack:
         4: aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
      StackMap locals:
      StackMap stack: com.mongodb.WriteConcern
         5: astore 4 /* writeConcern */
        start local 4 // com.mongodb.WriteConcern writeConcern
         6: .line 1997
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.isRemove:()Z
            ifeq 15
         7: .line 1998
            new com.mongodb.operation.FindAndDeleteOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            aload 4 /* writeConcern */
            aload 0 /* this */
            getfield com.mongodb.DBCollection.retryWrites:Z
            aload 0 /* this */
            getfield com.mongodb.DBCollection.objectCodec:Lcom/mongodb/CompoundDBObjectCodec;
            invokespecial com.mongodb.operation.FindAndDeleteOperation.<init>:(Lcom/mongodb/MongoNamespace;Lcom/mongodb/WriteConcern;ZLorg/bson/codecs/Decoder;)V
         8: .line 1999
            aload 0 /* this */
            aload 1 /* query */
            invokevirtual com.mongodb.DBCollection.wrapAllowNull:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.FindAndDeleteOperation.filter:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/FindAndDeleteOperation;
         9: .line 2000
            aload 0 /* this */
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getProjection:()Lcom/mongodb/DBObject;
            invokevirtual com.mongodb.DBCollection.wrapAllowNull:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.FindAndDeleteOperation.projection:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/FindAndDeleteOperation;
        10: .line 2001
            aload 0 /* this */
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getSort:()Lcom/mongodb/DBObject;
            invokevirtual com.mongodb.DBCollection.wrapAllowNull:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.FindAndDeleteOperation.sort:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/FindAndDeleteOperation;
        11: .line 2002
            aload 2 /* options */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getMaxTime:(Ljava/util/concurrent/TimeUnit;)J
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.operation.FindAndDeleteOperation.maxTime:(JLjava/util/concurrent/TimeUnit;)Lcom/mongodb/operation/FindAndDeleteOperation;
        12: .line 2003
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getCollation:()Lcom/mongodb/client/model/Collation;
            invokevirtual com.mongodb.operation.FindAndDeleteOperation.collation:(Lcom/mongodb/client/model/Collation;)Lcom/mongodb/operation/FindAndDeleteOperation;
        13: .line 1998
            astore 5 /* operation */
        start local 5 // com.mongodb.operation.WriteOperation operation
        14: .line 2004
            goto 49
        end local 5 // com.mongodb.operation.WriteOperation operation
        15: .line 2005
      StackMap locals: com.mongodb.WriteConcern
      StackMap stack:
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getUpdate:()Lcom/mongodb/DBObject;
            astore 6 /* update */
        start local 6 // com.mongodb.DBObject update
        16: .line 2006
            aload 6 /* update */
            ifnonnull 18
        17: .line 2007
            new java.lang.IllegalArgumentException
            dup
            ldc "update can not be null unless it's a remove"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 2009
      StackMap locals: com.mongodb.DBCollection com.mongodb.DBObject com.mongodb.client.model.DBCollectionFindAndModifyOptions com.mongodb.WriteConcern com.mongodb.WriteConcern top com.mongodb.DBObject
      StackMap stack:
            aload 6 /* update */
            invokeinterface com.mongodb.DBObject.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 35
            aload 6 /* update */
            invokeinterface com.mongodb.DBObject.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 36
            if_icmpne 35
        19: .line 2010
            new com.mongodb.operation.FindAndUpdateOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            aload 4 /* writeConcern */
            aload 0 /* this */
            getfield com.mongodb.DBCollection.retryWrites:Z
            aload 0 /* this */
            getfield com.mongodb.DBCollection.objectCodec:Lcom/mongodb/CompoundDBObjectCodec;
        20: .line 2011
            aload 0 /* this */
            aload 6 /* update */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
        21: .line 2010
            invokespecial com.mongodb.operation.FindAndUpdateOperation.<init>:(Lcom/mongodb/MongoNamespace;Lcom/mongodb/WriteConcern;ZLorg/bson/codecs/Decoder;Lorg/bson/BsonDocument;)V
        22: .line 2012
            aload 0 /* this */
            aload 1 /* query */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.FindAndUpdateOperation.filter:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/FindAndUpdateOperation;
        23: .line 2013
            aload 0 /* this */
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getProjection:()Lcom/mongodb/DBObject;
            invokevirtual com.mongodb.DBCollection.wrapAllowNull:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.FindAndUpdateOperation.projection:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/FindAndUpdateOperation;
        24: .line 2014
            aload 0 /* this */
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getSort:()Lcom/mongodb/DBObject;
            invokevirtual com.mongodb.DBCollection.wrapAllowNull:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.FindAndUpdateOperation.sort:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/FindAndUpdateOperation;
        25: .line 2015
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.returnNew:()Z
            ifeq 26
            iconst_0
            goto 27
      StackMap locals:
      StackMap stack: com.mongodb.operation.FindAndUpdateOperation
        26: iconst_1
      StackMap locals: com.mongodb.DBCollection com.mongodb.DBObject com.mongodb.client.model.DBCollectionFindAndModifyOptions com.mongodb.WriteConcern com.mongodb.WriteConcern top com.mongodb.DBObject
      StackMap stack: com.mongodb.operation.FindAndUpdateOperation int
        27: invokevirtual com.mongodb.operation.FindAndUpdateOperation.returnOriginal:(Z)Lcom/mongodb/operation/FindAndUpdateOperation;
        28: .line 2016
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.isUpsert:()Z
            invokevirtual com.mongodb.operation.FindAndUpdateOperation.upsert:(Z)Lcom/mongodb/operation/FindAndUpdateOperation;
        29: .line 2017
            aload 2 /* options */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getMaxTime:(Ljava/util/concurrent/TimeUnit;)J
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.operation.FindAndUpdateOperation.maxTime:(JLjava/util/concurrent/TimeUnit;)Lcom/mongodb/operation/FindAndUpdateOperation;
        30: .line 2018
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getBypassDocumentValidation:()Ljava/lang/Boolean;
            invokevirtual com.mongodb.operation.FindAndUpdateOperation.bypassDocumentValidation:(Ljava/lang/Boolean;)Lcom/mongodb/operation/FindAndUpdateOperation;
        31: .line 2019
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getCollation:()Lcom/mongodb/client/model/Collation;
            invokevirtual com.mongodb.operation.FindAndUpdateOperation.collation:(Lcom/mongodb/client/model/Collation;)Lcom/mongodb/operation/FindAndUpdateOperation;
        32: .line 2020
            aload 0 /* this */
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getArrayFilters:()Ljava/util/List;
            aconst_null
            invokevirtual com.mongodb.DBCollection.wrapAllowNull:(Ljava/util/List;Lorg/bson/codecs/Encoder;)Ljava/util/List;
            invokevirtual com.mongodb.operation.FindAndUpdateOperation.arrayFilters:(Ljava/util/List;)Lcom/mongodb/operation/FindAndUpdateOperation;
        33: .line 2010
            astore 5 /* operation */
        start local 5 // com.mongodb.operation.WriteOperation operation
        34: .line 2021
            goto 49
        end local 5 // com.mongodb.operation.WriteOperation operation
        35: .line 2022
      StackMap locals:
      StackMap stack:
            new com.mongodb.operation.FindAndReplaceOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            aload 4 /* writeConcern */
            aload 0 /* this */
            getfield com.mongodb.DBCollection.retryWrites:Z
            aload 0 /* this */
            getfield com.mongodb.DBCollection.objectCodec:Lcom/mongodb/CompoundDBObjectCodec;
        36: .line 2023
            aload 0 /* this */
            aload 6 /* update */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
        37: .line 2022
            invokespecial com.mongodb.operation.FindAndReplaceOperation.<init>:(Lcom/mongodb/MongoNamespace;Lcom/mongodb/WriteConcern;ZLorg/bson/codecs/Decoder;Lorg/bson/BsonDocument;)V
        38: .line 2024
            aload 0 /* this */
            aload 1 /* query */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.FindAndReplaceOperation.filter:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/FindAndReplaceOperation;
        39: .line 2025
            aload 0 /* this */
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getProjection:()Lcom/mongodb/DBObject;
            invokevirtual com.mongodb.DBCollection.wrapAllowNull:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.FindAndReplaceOperation.projection:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/FindAndReplaceOperation;
        40: .line 2026
            aload 0 /* this */
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getSort:()Lcom/mongodb/DBObject;
            invokevirtual com.mongodb.DBCollection.wrapAllowNull:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.operation.FindAndReplaceOperation.sort:(Lorg/bson/BsonDocument;)Lcom/mongodb/operation/FindAndReplaceOperation;
        41: .line 2027
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.returnNew:()Z
            ifeq 42
            iconst_0
            goto 43
      StackMap locals:
      StackMap stack: com.mongodb.operation.FindAndReplaceOperation
        42: iconst_1
      StackMap locals: com.mongodb.DBCollection com.mongodb.DBObject com.mongodb.client.model.DBCollectionFindAndModifyOptions com.mongodb.WriteConcern com.mongodb.WriteConcern top com.mongodb.DBObject
      StackMap stack: com.mongodb.operation.FindAndReplaceOperation int
        43: invokevirtual com.mongodb.operation.FindAndReplaceOperation.returnOriginal:(Z)Lcom/mongodb/operation/FindAndReplaceOperation;
        44: .line 2028
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.isUpsert:()Z
            invokevirtual com.mongodb.operation.FindAndReplaceOperation.upsert:(Z)Lcom/mongodb/operation/FindAndReplaceOperation;
        45: .line 2029
            aload 2 /* options */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getMaxTime:(Ljava/util/concurrent/TimeUnit;)J
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.operation.FindAndReplaceOperation.maxTime:(JLjava/util/concurrent/TimeUnit;)Lcom/mongodb/operation/FindAndReplaceOperation;
        46: .line 2030
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getBypassDocumentValidation:()Ljava/lang/Boolean;
            invokevirtual com.mongodb.operation.FindAndReplaceOperation.bypassDocumentValidation:(Ljava/lang/Boolean;)Lcom/mongodb/operation/FindAndReplaceOperation;
        47: .line 2031
            aload 2 /* options */
            invokevirtual com.mongodb.client.model.DBCollectionFindAndModifyOptions.getCollation:()Lcom/mongodb/client/model/Collation;
            invokevirtual com.mongodb.operation.FindAndReplaceOperation.collation:(Lcom/mongodb/client/model/Collation;)Lcom/mongodb/operation/FindAndReplaceOperation;
        48: .line 2022
            astore 5 /* operation */
        end local 6 // com.mongodb.DBObject update
        start local 5 // com.mongodb.operation.WriteOperation operation
        49: .line 2036
      StackMap locals: com.mongodb.DBCollection com.mongodb.DBObject com.mongodb.client.model.DBCollectionFindAndModifyOptions com.mongodb.WriteConcern com.mongodb.WriteConcern com.mongodb.operation.WriteOperation
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            aload 5 /* operation */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/WriteOperation;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            checkcast com.mongodb.DBObject
        50: areturn
        51: .line 2037
      StackMap locals:
      StackMap stack: com.mongodb.MongoWriteConcernException
            astore 6 /* e */
        start local 6 // com.mongodb.MongoWriteConcernException e
        52: .line 2038
            aload 6 /* e */
            invokestatic com.mongodb.DBCollection.createWriteConcernException:(Lcom/mongodb/MongoWriteConcernException;)Lcom/mongodb/WriteConcernException;
            athrow
        end local 6 // com.mongodb.MongoWriteConcernException e
        end local 5 // com.mongodb.operation.WriteOperation operation
        end local 4 // com.mongodb.WriteConcern writeConcern
        end local 3 // com.mongodb.WriteConcern optionsWriteConcern
        end local 2 // com.mongodb.client.model.DBCollectionFindAndModifyOptions options
        end local 1 // com.mongodb.DBObject query
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   53     0                 this  Lcom/mongodb/DBCollection;
            0   53     1                query  Lcom/mongodb/DBObject;
            0   53     2              options  Lcom/mongodb/client/model/DBCollectionFindAndModifyOptions;
            3   53     3  optionsWriteConcern  Lcom/mongodb/WriteConcern;
            6   53     4         writeConcern  Lcom/mongodb/WriteConcern;
           14   15     5            operation  Lcom/mongodb/operation/WriteOperation<Lcom/mongodb/DBObject;>;
           34   35     5            operation  Lcom/mongodb/operation/WriteOperation<Lcom/mongodb/DBObject;>;
           49   53     5            operation  Lcom/mongodb/operation/WriteOperation<Lcom/mongodb/DBObject;>;
           16   49     6               update  Lcom/mongodb/DBObject;
           52   53     6                    e  Lcom/mongodb/MongoWriteConcernException;
      Exception table:
        from    to  target  type
          49    50      51  Class com.mongodb.MongoWriteConcernException
    MethodParameters:
         Name  Flags
      query    final
      options  final

  public com.mongodb.DB getDB();
    descriptor: ()Lcom/mongodb/DB;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2049
            aload 0 /* this */
            getfield com.mongodb.DBCollection.database:Lcom/mongodb/DB;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  public com.mongodb.WriteConcern getWriteConcern();
    descriptor: ()Lcom/mongodb/WriteConcern;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2059
            aload 0 /* this */
            getfield com.mongodb.DBCollection.writeConcern:Lcom/mongodb/WriteConcern;
            ifnull 2
         1: .line 2060
            aload 0 /* this */
            getfield com.mongodb.DBCollection.writeConcern:Lcom/mongodb/WriteConcern;
            areturn
         2: .line 2062
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.DBCollection.database:Lcom/mongodb/DB;
            invokevirtual com.mongodb.DB.getWriteConcern:()Lcom/mongodb/WriteConcern;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/mongodb/DBCollection;

  public void setWriteConcern(com.mongodb.WriteConcern);
    descriptor: (Lcom/mongodb/WriteConcern;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.WriteConcern writeConcern
         0: .line 2073
            aload 0 /* this */
            aload 1 /* writeConcern */
            putfield com.mongodb.DBCollection.writeConcern:Lcom/mongodb/WriteConcern;
         1: .line 2074
            return
        end local 1 // com.mongodb.WriteConcern writeConcern
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lcom/mongodb/DBCollection;
            0    2     1  writeConcern  Lcom/mongodb/WriteConcern;
    MethodParameters:
              Name  Flags
      writeConcern  final

  public com.mongodb.ReadPreference getReadPreference();
    descriptor: ()Lcom/mongodb/ReadPreference;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2083
            aload 0 /* this */
            getfield com.mongodb.DBCollection.readPreference:Lcom/mongodb/ReadPreference;
            ifnull 2
         1: .line 2084
            aload 0 /* this */
            getfield com.mongodb.DBCollection.readPreference:Lcom/mongodb/ReadPreference;
            areturn
         2: .line 2086
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.DBCollection.database:Lcom/mongodb/DB;
            invokevirtual com.mongodb.DB.getReadPreference:()Lcom/mongodb/ReadPreference;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/mongodb/DBCollection;

  public void setReadPreference(com.mongodb.ReadPreference);
    descriptor: (Lcom/mongodb/ReadPreference;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.ReadPreference preference
         0: .line 2097
            aload 0 /* this */
            aload 1 /* preference */
            putfield com.mongodb.DBCollection.readPreference:Lcom/mongodb/ReadPreference;
         1: .line 2098
            return
        end local 1 // com.mongodb.ReadPreference preference
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/mongodb/DBCollection;
            0    2     1  preference  Lcom/mongodb/ReadPreference;
    MethodParameters:
            Name  Flags
      preference  final

  public void setReadConcern(com.mongodb.ReadConcern);
    descriptor: (Lcom/mongodb/ReadConcern;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.ReadConcern readConcern
         0: .line 2109
            aload 0 /* this */
            aload 1 /* readConcern */
            putfield com.mongodb.DBCollection.readConcern:Lcom/mongodb/ReadConcern;
         1: .line 2110
            return
        end local 1 // com.mongodb.ReadConcern readConcern
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lcom/mongodb/DBCollection;
            0    2     1  readConcern  Lcom/mongodb/ReadConcern;
    MethodParameters:
             Name  Flags
      readConcern  final

  public com.mongodb.ReadConcern getReadConcern();
    descriptor: ()Lcom/mongodb/ReadConcern;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2121
            aload 0 /* this */
            getfield com.mongodb.DBCollection.readConcern:Lcom/mongodb/ReadConcern;
            ifnull 2
         1: .line 2122
            aload 0 /* this */
            getfield com.mongodb.DBCollection.readConcern:Lcom/mongodb/ReadConcern;
            areturn
         2: .line 2124
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.DBCollection.database:Lcom/mongodb/DB;
            invokevirtual com.mongodb.DB.getReadConcern:()Lcom/mongodb/ReadConcern;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/mongodb/DBCollection;

  public void slaveOk();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2134
            aload 0 /* this */
            iconst_4
            invokevirtual com.mongodb.DBCollection.addOption:(I)V
         1: .line 2135
            return
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/DBCollection;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public void addOption(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // int option
         0: .line 2146
            aload 0 /* this */
            getfield com.mongodb.DBCollection.optionHolder:Lcom/mongodb/Bytes$OptionHolder;
            iload 1 /* option */
            invokevirtual com.mongodb.Bytes$OptionHolder.add:(I)V
         1: .line 2147
            return
        end local 1 // int option
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/mongodb/DBCollection;
            0    2     1  option  I
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
        Name  Flags
      option  final

  public void resetOptions();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2157
            aload 0 /* this */
            getfield com.mongodb.DBCollection.optionHolder:Lcom/mongodb/Bytes$OptionHolder;
            invokevirtual com.mongodb.Bytes$OptionHolder.reset:()V
         1: .line 2158
            return
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/DBCollection;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public int getOptions();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2169
            aload 0 /* this */
            getfield com.mongodb.DBCollection.optionHolder:Lcom/mongodb/Bytes$OptionHolder;
            invokevirtual com.mongodb.Bytes$OptionHolder.get:()I
            ireturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public void setOptions(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // int options
         0: .line 2181
            aload 0 /* this */
            getfield com.mongodb.DBCollection.optionHolder:Lcom/mongodb/Bytes$OptionHolder;
            iload 1 /* options */
            invokevirtual com.mongodb.Bytes$OptionHolder.set:(I)V
         1: .line 2182
            return
        end local 1 // int options
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/mongodb/DBCollection;
            0    2     1  options  I
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      options  final

  public void drop();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2193
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            new com.mongodb.operation.DropCollectionOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
            invokespecial com.mongodb.operation.DropCollectionOperation.<init>:(Lcom/mongodb/MongoNamespace;Lcom/mongodb/WriteConcern;)V
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/WriteOperation;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            pop
         1: .line 2194
            goto 4
      StackMap locals:
      StackMap stack: com.mongodb.MongoWriteConcernException
         2: astore 1 /* e */
        start local 1 // com.mongodb.MongoWriteConcernException e
         3: .line 2195
            aload 1 /* e */
            invokestatic com.mongodb.DBCollection.createWriteConcernException:(Lcom/mongodb/MongoWriteConcernException;)Lcom/mongodb/WriteConcernException;
            athrow
        end local 1 // com.mongodb.MongoWriteConcernException e
         4: .line 2197
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/mongodb/DBCollection;
            3    4     1     e  Lcom/mongodb/MongoWriteConcernException;
      Exception table:
        from    to  target  type
           0     1       2  Class com.mongodb.MongoWriteConcernException

  public synchronized com.mongodb.DBDecoderFactory getDBDecoderFactory();
    descriptor: ()Lcom/mongodb/DBDecoderFactory;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2205
            aload 0 /* this */
            getfield com.mongodb.DBCollection.decoderFactory:Lcom/mongodb/DBDecoderFactory;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  public synchronized void setDBDecoderFactory(com.mongodb.DBDecoderFactory);
    descriptor: (Lcom/mongodb/DBDecoderFactory;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBDecoderFactory factory
         0: .line 2214
            aload 0 /* this */
            aload 1 /* factory */
            putfield com.mongodb.DBCollection.decoderFactory:Lcom/mongodb/DBDecoderFactory;
         1: .line 2218
            aload 1 /* factory */
            ifnull 2
            aload 1 /* factory */
            getstatic com.mongodb.DefaultDBDecoder.FACTORY:Lcom/mongodb/DBDecoderFactory;
            if_acmpne 3
         2: .line 2219
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getDefaultDBObjectCodec:()Lcom/mongodb/DBObjectCodec;
            goto 4
         3: .line 2220
      StackMap locals:
      StackMap stack:
            new com.mongodb.DBDecoderAdapter
            dup
            aload 1 /* factory */
            invokeinterface com.mongodb.DBDecoderFactory.create:()Lcom/mongodb/DBDecoder;
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getBufferPool:()Lcom/mongodb/connection/BufferProvider;
            invokespecial com.mongodb.DBDecoderAdapter.<init>:(Lcom/mongodb/DBDecoder;Lcom/mongodb/DBCollection;Lcom/mongodb/connection/BufferProvider;)V
         4: .line 2218
      StackMap locals:
      StackMap stack: org.bson.codecs.Decoder
            astore 2 /* decoder */
        start local 2 // org.bson.codecs.Decoder decoder
         5: .line 2221
            aload 0 /* this */
            new com.mongodb.CompoundDBObjectCodec
            dup
            aload 0 /* this */
            getfield com.mongodb.DBCollection.objectCodec:Lcom/mongodb/CompoundDBObjectCodec;
            invokevirtual com.mongodb.CompoundDBObjectCodec.getEncoder:()Lorg/bson/codecs/Encoder;
            aload 2 /* decoder */
            invokespecial com.mongodb.CompoundDBObjectCodec.<init>:(Lorg/bson/codecs/Encoder;Lorg/bson/codecs/Decoder;)V
            putfield com.mongodb.DBCollection.objectCodec:Lcom/mongodb/CompoundDBObjectCodec;
         6: .line 2222
            return
        end local 2 // org.bson.codecs.Decoder decoder
        end local 1 // com.mongodb.DBDecoderFactory factory
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lcom/mongodb/DBCollection;
            0    7     1  factory  Lcom/mongodb/DBDecoderFactory;
            5    7     2  decoder  Lorg/bson/codecs/Decoder<Lcom/mongodb/DBObject;>;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
    MethodParameters:
         Name  Flags
      factory  final

  public synchronized com.mongodb.DBEncoderFactory getDBEncoderFactory();
    descriptor: ()Lcom/mongodb/DBEncoderFactory;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2230
            aload 0 /* this */
            getfield com.mongodb.DBCollection.encoderFactory:Lcom/mongodb/DBEncoderFactory;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  public synchronized void setDBEncoderFactory(com.mongodb.DBEncoderFactory);
    descriptor: (Lcom/mongodb/DBEncoderFactory;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBEncoderFactory factory
         0: .line 2239
            aload 0 /* this */
            aload 1 /* factory */
            putfield com.mongodb.DBCollection.encoderFactory:Lcom/mongodb/DBEncoderFactory;
         1: .line 2243
            aload 1 /* factory */
            ifnull 2
            aload 1 /* factory */
            getstatic com.mongodb.DefaultDBEncoder.FACTORY:Lcom/mongodb/DBEncoderFactory;
            if_acmpne 3
         2: .line 2244
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getDefaultDBObjectCodec:()Lcom/mongodb/DBObjectCodec;
            goto 4
         3: .line 2245
      StackMap locals:
      StackMap stack:
            new com.mongodb.DBEncoderFactoryAdapter
            dup
            aload 0 /* this */
            getfield com.mongodb.DBCollection.encoderFactory:Lcom/mongodb/DBEncoderFactory;
            invokespecial com.mongodb.DBEncoderFactoryAdapter.<init>:(Lcom/mongodb/DBEncoderFactory;)V
         4: .line 2243
      StackMap locals:
      StackMap stack: org.bson.codecs.Encoder
            astore 2 /* encoder */
        start local 2 // org.bson.codecs.Encoder encoder
         5: .line 2246
            aload 0 /* this */
            new com.mongodb.CompoundDBObjectCodec
            dup
            aload 2 /* encoder */
            aload 0 /* this */
            getfield com.mongodb.DBCollection.objectCodec:Lcom/mongodb/CompoundDBObjectCodec;
            invokevirtual com.mongodb.CompoundDBObjectCodec.getDecoder:()Lorg/bson/codecs/Decoder;
            invokespecial com.mongodb.CompoundDBObjectCodec.<init>:(Lorg/bson/codecs/Encoder;Lorg/bson/codecs/Decoder;)V
            putfield com.mongodb.DBCollection.objectCodec:Lcom/mongodb/CompoundDBObjectCodec;
         6: .line 2247
            return
        end local 2 // org.bson.codecs.Encoder encoder
        end local 1 // com.mongodb.DBEncoderFactory factory
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lcom/mongodb/DBCollection;
            0    7     1  factory  Lcom/mongodb/DBEncoderFactory;
            5    7     2  encoder  Lorg/bson/codecs/Encoder<Lcom/mongodb/DBObject;>;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
    MethodParameters:
         Name  Flags
      factory  final

  public java.util.List<com.mongodb.DBObject> getIndexInfo();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2257
            new com.mongodb.DBCollection$3
            dup
            aload 0 /* this */
            aconst_null
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            getstatic com.mongodb.ReadConcern.DEFAULT:Lcom/mongodb/ReadConcern;
            invokestatic com.mongodb.ReadPreference.primary:()Lcom/mongodb/ReadPreference;
            aload 0 /* this */
            getfield com.mongodb.DBCollection.retryReads:Z
            invokespecial com.mongodb.DBCollection$3.<init>:(Lcom/mongodb/DBCollection;Lcom/mongodb/client/ClientSession;Lcom/mongodb/client/internal/OperationExecutor;Lcom/mongodb/ReadConcern;Lcom/mongodb/ReadPreference;Z)V
         1: .line 2262
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            invokevirtual com.mongodb.DBCollection$3.into:(Ljava/util/Collection;)Ljava/util/Collection;
            checkcast java.util.List
         2: .line 2257
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/mongodb/DBCollection;
    Signature: ()Ljava/util/List<Lcom/mongodb/DBObject;>;

  public void dropIndex(com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject index
         0: .line 2275
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            new com.mongodb.operation.DropIndexOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            aload 0 /* this */
            aload 1 /* index */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
            invokespecial com.mongodb.operation.DropIndexOperation.<init>:(Lcom/mongodb/MongoNamespace;Lorg/bson/BsonDocument;Lcom/mongodb/WriteConcern;)V
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/WriteOperation;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            pop
         1: .line 2276
            goto 4
      StackMap locals:
      StackMap stack: com.mongodb.MongoWriteConcernException
         2: astore 2 /* e */
        start local 2 // com.mongodb.MongoWriteConcernException e
         3: .line 2277
            aload 2 /* e */
            invokestatic com.mongodb.DBCollection.createWriteConcernException:(Lcom/mongodb/MongoWriteConcernException;)Lcom/mongodb/WriteConcernException;
            athrow
        end local 2 // com.mongodb.MongoWriteConcernException e
         4: .line 2279
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.mongodb.DBObject index
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lcom/mongodb/DBCollection;
            0    5     1  index  Lcom/mongodb/DBObject;
            3    4     2      e  Lcom/mongodb/MongoWriteConcernException;
      Exception table:
        from    to  target  type
           0     1       2  Class com.mongodb.MongoWriteConcernException
    MethodParameters:
       Name  Flags
      index  final

  public void dropIndex(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String indexName
         0: .line 2290
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            new com.mongodb.operation.DropIndexOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            aload 1 /* indexName */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
            invokespecial com.mongodb.operation.DropIndexOperation.<init>:(Lcom/mongodb/MongoNamespace;Ljava/lang/String;Lcom/mongodb/WriteConcern;)V
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/WriteOperation;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            pop
         1: .line 2291
            goto 4
      StackMap locals:
      StackMap stack: com.mongodb.MongoWriteConcernException
         2: astore 2 /* e */
        start local 2 // com.mongodb.MongoWriteConcernException e
         3: .line 2292
            aload 2 /* e */
            invokestatic com.mongodb.DBCollection.createWriteConcernException:(Lcom/mongodb/MongoWriteConcernException;)Lcom/mongodb/WriteConcernException;
            athrow
        end local 2 // com.mongodb.MongoWriteConcernException e
         4: .line 2294
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String indexName
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lcom/mongodb/DBCollection;
            0    5     1  indexName  Ljava/lang/String;
            3    4     2          e  Lcom/mongodb/MongoWriteConcernException;
      Exception table:
        from    to  target  type
           0     1       2  Class com.mongodb.MongoWriteConcernException
    MethodParameters:
           Name  Flags
      indexName  final

  public void dropIndexes();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2301
            aload 0 /* this */
            ldc "*"
            invokevirtual com.mongodb.DBCollection.dropIndex:(Ljava/lang/String;)V
         1: .line 2302
            return
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/DBCollection;

  public void dropIndexes(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String indexName
         0: .line 2312
            aload 0 /* this */
            aload 1 /* indexName */
            invokevirtual com.mongodb.DBCollection.dropIndex:(Ljava/lang/String;)V
         1: .line 2313
            return
        end local 1 // java.lang.String indexName
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/mongodb/DBCollection;
            0    2     1  indexName  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      indexName  final

  public com.mongodb.CommandResult getStats();
    descriptor: ()Lcom/mongodb/CommandResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2322
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getDB:()Lcom/mongodb/DB;
            new org.bson.BsonDocument
            dup
            ldc "collStats"
            new org.bson.BsonString
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getName:()Ljava/lang/String;
            invokespecial org.bson.BsonString.<init>:(Ljava/lang/String;)V
            invokespecial org.bson.BsonDocument.<init>:(Ljava/lang/String;Lorg/bson/BsonValue;)V
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokevirtual com.mongodb.DB.executeCommand:(Lorg/bson/BsonDocument;Lcom/mongodb/ReadPreference;)Lcom/mongodb/CommandResult;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  public boolean isCapped();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2332
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getStats:()Lcom/mongodb/CommandResult;
            astore 1 /* commandResult */
        start local 1 // com.mongodb.CommandResult commandResult
         1: .line 2333
            aload 1 /* commandResult */
            ldc "capped"
            invokevirtual com.mongodb.CommandResult.get:(Ljava/lang/String;)Ljava/lang/Object;
            astore 2 /* cappedField */
        start local 2 // java.lang.Object cappedField
         2: .line 2334
            aload 2 /* cappedField */
            ifnull 4
            aload 2 /* cappedField */
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 3
            aload 2 /* cappedField */
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 4
      StackMap locals: com.mongodb.CommandResult java.lang.Object
      StackMap stack:
         3: iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_0
            ireturn
        end local 2 // java.lang.Object cappedField
        end local 1 // com.mongodb.CommandResult commandResult
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Lcom/mongodb/DBCollection;
            1    5     1  commandResult  Lcom/mongodb/CommandResult;
            2    5     2    cappedField  Ljava/lang/Object;

  public java.lang.Class getObjectClass();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2343
            aload 0 /* this */
            getfield com.mongodb.DBCollection.objectFactory:Lcom/mongodb/DBCollectionObjectFactory;
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            invokevirtual com.mongodb.DBCollectionObjectFactory.getClassForPath:(Ljava/util/List;)Ljava/lang/Class;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  public void setObjectClass(java.lang.Class<? extends com.mongodb.DBObject>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.Class aClass
         0: .line 2352
            aload 0 /* this */
            aload 0 /* this */
            getfield com.mongodb.DBCollection.objectFactory:Lcom/mongodb/DBCollectionObjectFactory;
            aload 1 /* aClass */
            invokevirtual com.mongodb.DBCollectionObjectFactory.update:(Ljava/lang/Class;)Lcom/mongodb/DBCollectionObjectFactory;
            invokevirtual com.mongodb.DBCollection.setObjectFactory:(Lcom/mongodb/DBCollectionObjectFactory;)V
         1: .line 2353
            return
        end local 1 // java.lang.Class aClass
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/mongodb/DBCollection;
            0    2     1  aClass  Ljava/lang/Class<+Lcom/mongodb/DBObject;>;
    Signature: (Ljava/lang/Class<+Lcom/mongodb/DBObject;>;)V
    MethodParameters:
        Name  Flags
      aClass  final

  public void setInternalClass(java.lang.String, java.lang.Class<? extends com.mongodb.DBObject>);
    descriptor: (Ljava/lang/String;Ljava/lang/Class;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String path
        start local 2 // java.lang.Class aClass
         0: .line 2362
            aload 0 /* this */
            aload 0 /* this */
            getfield com.mongodb.DBCollection.objectFactory:Lcom/mongodb/DBCollectionObjectFactory;
            aload 2 /* aClass */
            aload 1 /* path */
            ldc "\\."
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokevirtual com.mongodb.DBCollectionObjectFactory.update:(Ljava/lang/Class;Ljava/util/List;)Lcom/mongodb/DBCollectionObjectFactory;
            invokevirtual com.mongodb.DBCollection.setObjectFactory:(Lcom/mongodb/DBCollectionObjectFactory;)V
         1: .line 2363
            return
        end local 2 // java.lang.Class aClass
        end local 1 // java.lang.String path
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/mongodb/DBCollection;
            0    2     1    path  Ljava/lang/String;
            0    2     2  aClass  Ljava/lang/Class<+Lcom/mongodb/DBObject;>;
    Signature: (Ljava/lang/String;Ljava/lang/Class<+Lcom/mongodb/DBObject;>;)V
    MethodParameters:
        Name  Flags
      path    final
      aClass  final

  protected java.lang.Class<? extends com.mongodb.DBObject> getInternalClass(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Class;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.String path
         0: .line 2372
            aload 0 /* this */
            getfield com.mongodb.DBCollection.objectFactory:Lcom/mongodb/DBCollectionObjectFactory;
            aload 1 /* path */
            ldc "\\."
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokevirtual com.mongodb.DBCollectionObjectFactory.getClassForPath:(Ljava/util/List;)Ljava/lang/Class;
            areturn
        end local 1 // java.lang.String path
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;
            0    1     1  path  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Ljava/lang/Class<+Lcom/mongodb/DBObject;>;
    MethodParameters:
      Name  Flags
      path  final

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2377
            new java.lang.StringBuilder
            dup
            ldc "DBCollection{database="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.mongodb.DBCollection.database:Lcom/mongodb/DB;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ", name='"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.mongodb.DBCollection.name:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            bipush 39
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            bipush 125
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  synchronized com.mongodb.DBObjectFactory getObjectFactory();
    descriptor: ()Lcom/mongodb/DBObjectFactory;
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2381
            aload 0 /* this */
            getfield com.mongodb.DBCollection.objectFactory:Lcom/mongodb/DBCollectionObjectFactory;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  synchronized void setObjectFactory(com.mongodb.DBCollectionObjectFactory);
    descriptor: (Lcom/mongodb/DBCollectionObjectFactory;)V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBCollectionObjectFactory factory
         0: .line 2385
            aload 0 /* this */
            aload 1 /* factory */
            putfield com.mongodb.DBCollection.objectFactory:Lcom/mongodb/DBCollectionObjectFactory;
         1: .line 2386
            aload 0 /* this */
            new com.mongodb.CompoundDBObjectCodec
            dup
            aload 0 /* this */
            getfield com.mongodb.DBCollection.objectCodec:Lcom/mongodb/CompoundDBObjectCodec;
            invokevirtual com.mongodb.CompoundDBObjectCodec.getEncoder:()Lorg/bson/codecs/Encoder;
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getDefaultDBObjectCodec:()Lcom/mongodb/DBObjectCodec;
            invokespecial com.mongodb.CompoundDBObjectCodec.<init>:(Lorg/bson/codecs/Encoder;Lorg/bson/codecs/Decoder;)V
            putfield com.mongodb.DBCollection.objectCodec:Lcom/mongodb/CompoundDBObjectCodec;
         2: .line 2387
            return
        end local 1 // com.mongodb.DBCollectionObjectFactory factory
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lcom/mongodb/DBCollection;
            0    3     1  factory  Lcom/mongodb/DBCollectionObjectFactory;
    MethodParameters:
         Name  Flags
      factory  final

  public com.mongodb.BulkWriteOperation initializeOrderedBulkOperation();
    descriptor: ()Lcom/mongodb/BulkWriteOperation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2406
            new com.mongodb.BulkWriteOperation
            dup
            iconst_1
            aload 0 /* this */
            invokespecial com.mongodb.BulkWriteOperation.<init>:(ZLcom/mongodb/DBCollection;)V
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  public com.mongodb.BulkWriteOperation initializeUnorderedBulkOperation();
    descriptor: ()Lcom/mongodb/BulkWriteOperation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2422
            new com.mongodb.BulkWriteOperation
            dup
            iconst_0
            aload 0 /* this */
            invokespecial com.mongodb.BulkWriteOperation.<init>:(ZLcom/mongodb/DBCollection;)V
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  com.mongodb.BulkWriteResult executeBulkWriteOperation(boolean, java.lang.Boolean, java.util.List<com.mongodb.WriteRequest>);
    descriptor: (ZLjava/lang/Boolean;Ljava/util/List;)Lcom/mongodb/BulkWriteResult;
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // boolean ordered
        start local 2 // java.lang.Boolean bypassDocumentValidation
        start local 3 // java.util.List writeRequests
         0: .line 2427
            aload 0 /* this */
            iload 1 /* ordered */
            aload 2 /* bypassDocumentValidation */
            aload 3 /* writeRequests */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getWriteConcern:()Lcom/mongodb/WriteConcern;
            invokevirtual com.mongodb.DBCollection.executeBulkWriteOperation:(ZLjava/lang/Boolean;Ljava/util/List;Lcom/mongodb/WriteConcern;)Lcom/mongodb/BulkWriteResult;
            areturn
        end local 3 // java.util.List writeRequests
        end local 2 // java.lang.Boolean bypassDocumentValidation
        end local 1 // boolean ordered
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    1     0                      this  Lcom/mongodb/DBCollection;
            0    1     1                   ordered  Z
            0    1     2  bypassDocumentValidation  Ljava/lang/Boolean;
            0    1     3             writeRequests  Ljava/util/List<Lcom/mongodb/WriteRequest;>;
    Signature: (ZLjava/lang/Boolean;Ljava/util/List<Lcom/mongodb/WriteRequest;>;)Lcom/mongodb/BulkWriteResult;
    MethodParameters:
                          Name  Flags
      ordered                   final
      bypassDocumentValidation  final
      writeRequests             final

  com.mongodb.BulkWriteResult executeBulkWriteOperation(boolean, java.lang.Boolean, java.util.List<com.mongodb.WriteRequest>, com.mongodb.WriteConcern);
    descriptor: (ZLjava/lang/Boolean;Ljava/util/List;Lcom/mongodb/WriteConcern;)Lcom/mongodb/BulkWriteResult;
    flags: (0x0000) 
    Code:
      stack=8, locals=6, args_size=5
        start local 0 // com.mongodb.DBCollection this
        start local 1 // boolean ordered
        start local 2 // java.lang.Boolean bypassDocumentValidation
        start local 3 // java.util.List writeRequests
        start local 4 // com.mongodb.WriteConcern writeConcern
         0: .line 2434
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            new com.mongodb.operation.MixedBulkWriteOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
         1: .line 2435
            aload 0 /* this */
            aload 3 /* writeRequests */
            invokevirtual com.mongodb.DBCollection.translateWriteRequestsToNew:(Ljava/util/List;)Ljava/util/List;
            iload 1 /* ordered */
            aload 4 /* writeConcern */
            iconst_0
            invokespecial com.mongodb.operation.MixedBulkWriteOperation.<init>:(Lcom/mongodb/MongoNamespace;Ljava/util/List;ZLcom/mongodb/WriteConcern;Z)V
         2: .line 2436
            aload 2 /* bypassDocumentValidation */
            invokevirtual com.mongodb.operation.MixedBulkWriteOperation.bypassDocumentValidation:(Ljava/lang/Boolean;)Lcom/mongodb/operation/MixedBulkWriteOperation;
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getReadConcern:()Lcom/mongodb/ReadConcern;
         3: .line 2434
            invokeinterface com.mongodb.client.internal.OperationExecutor.execute:(Lcom/mongodb/operation/WriteOperation;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
            checkcast com.mongodb.bulk.BulkWriteResult
         4: .line 2436
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getObjectCodec:()Lorg/bson/codecs/Codec;
         5: .line 2434
            invokestatic com.mongodb.BulkWriteHelper.translateBulkWriteResult:(Lcom/mongodb/bulk/BulkWriteResult;Lorg/bson/codecs/Decoder;)Lcom/mongodb/BulkWriteResult;
         6: areturn
         7: .line 2437
      StackMap locals:
      StackMap stack: com.mongodb.MongoBulkWriteException
            astore 5 /* e */
        start local 5 // com.mongodb.MongoBulkWriteException e
         8: .line 2438
            aload 5 /* e */
            invokestatic com.mongodb.MongoClient.getDefaultCodecRegistry:()Lorg/bson/codecs/configuration/CodecRegistry;
            ldc Lcom/mongodb/DBObject;
            invokeinterface org.bson.codecs.configuration.CodecRegistry.get:(Ljava/lang/Class;)Lorg/bson/codecs/Codec;
            invokestatic com.mongodb.BulkWriteHelper.translateBulkWriteException:(Lcom/mongodb/MongoBulkWriteException;Lorg/bson/codecs/Decoder;)Lcom/mongodb/BulkWriteException;
            athrow
        end local 5 // com.mongodb.MongoBulkWriteException e
        end local 4 // com.mongodb.WriteConcern writeConcern
        end local 3 // java.util.List writeRequests
        end local 2 // java.lang.Boolean bypassDocumentValidation
        end local 1 // boolean ordered
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    9     0                      this  Lcom/mongodb/DBCollection;
            0    9     1                   ordered  Z
            0    9     2  bypassDocumentValidation  Ljava/lang/Boolean;
            0    9     3             writeRequests  Ljava/util/List<Lcom/mongodb/WriteRequest;>;
            0    9     4              writeConcern  Lcom/mongodb/WriteConcern;
            8    9     5                         e  Lcom/mongodb/MongoBulkWriteException;
      Exception table:
        from    to  target  type
           0     6       7  Class com.mongodb.MongoBulkWriteException
    Signature: (ZLjava/lang/Boolean;Ljava/util/List<Lcom/mongodb/WriteRequest;>;Lcom/mongodb/WriteConcern;)Lcom/mongodb/BulkWriteResult;
    MethodParameters:
                          Name  Flags
      ordered                   final
      bypassDocumentValidation  final
      writeRequests             final
      writeConcern              final

  private java.util.List<com.mongodb.bulk.WriteRequest> translateWriteRequestsToNew(java.util.List<com.mongodb.WriteRequest>);
    descriptor: (Ljava/util/List;)Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List writeRequests
         0: .line 2443
            new java.util.ArrayList
            dup
            aload 1 /* writeRequests */
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 2 /* retVal */
        start local 2 // java.util.List retVal
         1: .line 2444
            aload 1 /* writeRequests */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: com.mongodb.DBCollection java.util.List java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.mongodb.WriteRequest
            astore 3 /* cur */
        start local 3 // com.mongodb.WriteRequest cur
         3: .line 2445
            aload 2 /* retVal */
            aload 3 /* cur */
            aload 0 /* this */
            invokevirtual com.mongodb.WriteRequest.toNew:(Lcom/mongodb/DBCollection;)Lcom/mongodb/bulk/WriteRequest;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // com.mongodb.WriteRequest cur
         4: .line 2444
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 2447
            aload 2 /* retVal */
            areturn
        end local 2 // java.util.List retVal
        end local 1 // java.util.List writeRequests
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Lcom/mongodb/DBCollection;
            0    6     1  writeRequests  Ljava/util/List<Lcom/mongodb/WriteRequest;>;
            1    6     2         retVal  Ljava/util/List<Lcom/mongodb/bulk/WriteRequest;>;
            3    4     3            cur  Lcom/mongodb/WriteRequest;
    Signature: (Ljava/util/List<Lcom/mongodb/WriteRequest;>;)Ljava/util/List<Lcom/mongodb/bulk/WriteRequest;>;
    MethodParameters:
               Name  Flags
      writeRequests  final

  com.mongodb.DBObjectCodec getDefaultDBObjectCodec();
    descriptor: ()Lcom/mongodb/DBObjectCodec;
    flags: (0x0000) 
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2451
            new com.mongodb.DBObjectCodec
            dup
            invokestatic com.mongodb.MongoClient.getDefaultCodecRegistry:()Lorg/bson/codecs/configuration/CodecRegistry;
         1: .line 2452
            invokestatic com.mongodb.DBObjectCodec.getDefaultBsonTypeClassMap:()Lorg/bson/codecs/BsonTypeClassMap;
         2: .line 2453
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getObjectFactory:()Lcom/mongodb/DBObjectFactory;
         3: .line 2451
            invokespecial com.mongodb.DBObjectCodec.<init>:(Lorg/bson/codecs/configuration/CodecRegistry;Lorg/bson/codecs/BsonTypeClassMap;Lcom/mongodb/DBObjectFactory;)V
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/mongodb/DBCollection;

  private <T> T convertOptionsToType(com.mongodb.DBObject, java.lang.String, java.lang.Class<T>);
    descriptor: (Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=4, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject options
        start local 2 // java.lang.String field
        start local 3 // java.lang.Class clazz
         0: .line 2457
            aload 0 /* this */
            aload 3 /* clazz */
            aload 1 /* options */
            aload 2 /* field */
            invokeinterface com.mongodb.DBObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            ldc "'%s' should be of class %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* field */
            aastore
            dup
            iconst_1
            aload 3 /* clazz */
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual com.mongodb.DBCollection.convertToType:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.Class clazz
        end local 2 // java.lang.String field
        end local 1 // com.mongodb.DBObject options
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/mongodb/DBCollection;
            0    1     1  options  Lcom/mongodb/DBObject;
            0    1     2    field  Ljava/lang/String;
            0    1     3    clazz  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
         Name  Flags
      options  final
      field    final
      clazz    final

  private <T> T convertToType(java.lang.Class<T>, , java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.lang.Class clazz
        start local 2 // java.lang.Object value
        start local 3 // java.lang.String errorMessage
         0: .line 2462
            aload 2 /* value */
            astore 4 /* transformedValue */
        start local 4 // java.lang.Object transformedValue
         1: .line 2463
            aload 1 /* clazz */
            ldc Ljava/lang/Boolean;
            if_acmpne 10
         2: .line 2464
            aload 2 /* value */
            instanceof java.lang.Boolean
            ifeq 5
         3: .line 2465
            aload 2 /* value */
            astore 4 /* transformedValue */
         4: .line 2466
            goto 21
      StackMap locals: java.lang.Object
      StackMap stack:
         5: aload 2 /* value */
            instanceof java.lang.Number
            ifeq 21
         6: .line 2467
            aload 2 /* value */
            checkcast java.lang.Number
            invokevirtual java.lang.Number.doubleValue:()D
            dconst_0
            dcmpl
            ifeq 7
            iconst_1
            goto 8
      StackMap locals:
      StackMap stack:
         7: iconst_0
      StackMap locals:
      StackMap stack: int
         8: invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            astore 4 /* transformedValue */
         9: .line 2469
            goto 21
      StackMap locals:
      StackMap stack:
        10: aload 1 /* clazz */
            ldc Ljava/lang/Double;
            if_acmpne 14
        11: .line 2470
            aload 2 /* value */
            instanceof java.lang.Number
            ifeq 21
        12: .line 2471
            aload 2 /* value */
            checkcast java.lang.Number
            invokevirtual java.lang.Number.doubleValue:()D
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            astore 4 /* transformedValue */
        13: .line 2473
            goto 21
      StackMap locals:
      StackMap stack:
        14: aload 1 /* clazz */
            ldc Ljava/lang/Integer;
            if_acmpne 18
        15: .line 2474
            aload 2 /* value */
            instanceof java.lang.Number
            ifeq 21
        16: .line 2475
            aload 2 /* value */
            checkcast java.lang.Number
            invokevirtual java.lang.Number.intValue:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 4 /* transformedValue */
        17: .line 2477
            goto 21
      StackMap locals:
      StackMap stack:
        18: aload 1 /* clazz */
            ldc Ljava/lang/Long;
            if_acmpne 21
        19: .line 2478
            aload 2 /* value */
            instanceof java.lang.Number
            ifeq 21
        20: .line 2479
            aload 2 /* value */
            checkcast java.lang.Number
            invokevirtual java.lang.Number.longValue:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            astore 4 /* transformedValue */
        21: .line 2483
      StackMap locals:
      StackMap stack:
            aload 1 /* clazz */
            aload 4 /* transformedValue */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 23
        22: .line 2484
            new java.lang.IllegalArgumentException
            dup
            aload 3 /* errorMessage */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        23: .line 2486
      StackMap locals:
      StackMap stack:
            aload 4 /* transformedValue */
            areturn
        end local 4 // java.lang.Object transformedValue
        end local 3 // java.lang.String errorMessage
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Class clazz
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   24     0              this  Lcom/mongodb/DBCollection;
            0   24     1             clazz  Ljava/lang/Class<TT;>;
            0   24     2             value  Ljava/lang/Object;
            0   24     3      errorMessage  Ljava/lang/String;
            1   24     4  transformedValue  Ljava/lang/Object;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Ljava/lang/Object;Ljava/lang/String;)TT;
    MethodParameters:
              Name  Flags
      clazz         final
      value         final
      errorMessage  final

  private com.mongodb.operation.CreateIndexesOperation createIndexOperation(com.mongodb.DBObject, com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBObject;)Lcom/mongodb/operation/CreateIndexesOperation;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject key
        start local 2 // com.mongodb.DBObject options
         0: .line 2491
            new com.mongodb.bulk.IndexRequest
            dup
            aload 0 /* this */
            aload 1 /* key */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokespecial com.mongodb.bulk.IndexRequest.<init>:(Lorg/bson/BsonDocument;)V
            astore 3 /* request */
        start local 3 // com.mongodb.bulk.IndexRequest request
         1: .line 2492
            aload 2 /* options */
            ldc "name"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 2493
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "name"
            ldc Ljava/lang/String;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual com.mongodb.bulk.IndexRequest.name:(Ljava/lang/String;)Lcom/mongodb/bulk/IndexRequest;
            pop
         3: .line 2495
      StackMap locals: com.mongodb.bulk.IndexRequest
      StackMap stack:
            aload 2 /* options */
            ldc "background"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 5
         4: .line 2496
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "background"
            ldc Ljava/lang/Boolean;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokevirtual com.mongodb.bulk.IndexRequest.background:(Z)Lcom/mongodb/bulk/IndexRequest;
            pop
         5: .line 2498
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "unique"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 7
         6: .line 2499
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "unique"
            ldc Ljava/lang/Boolean;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokevirtual com.mongodb.bulk.IndexRequest.unique:(Z)Lcom/mongodb/bulk/IndexRequest;
            pop
         7: .line 2501
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "sparse"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 9
         8: .line 2502
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "sparse"
            ldc Ljava/lang/Boolean;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokevirtual com.mongodb.bulk.IndexRequest.sparse:(Z)Lcom/mongodb/bulk/IndexRequest;
            pop
         9: .line 2504
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "expireAfterSeconds"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 11
        10: .line 2505
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "expireAfterSeconds"
            ldc Ljava/lang/Long;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Long
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.mongodb.bulk.IndexRequest.expireAfter:(Ljava/lang/Long;Ljava/util/concurrent/TimeUnit;)Lcom/mongodb/bulk/IndexRequest;
            pop
        11: .line 2507
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "v"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 13
        12: .line 2508
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "v"
            ldc Ljava/lang/Integer;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual com.mongodb.bulk.IndexRequest.version:(Ljava/lang/Integer;)Lcom/mongodb/bulk/IndexRequest;
            pop
        13: .line 2510
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "weights"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 15
        14: .line 2511
            aload 3 /* request */
            aload 0 /* this */
            aload 0 /* this */
            aload 2 /* options */
            ldc "weights"
            ldc Lcom/mongodb/DBObject;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.mongodb.DBObject
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.bulk.IndexRequest.weights:(Lorg/bson/BsonDocument;)Lcom/mongodb/bulk/IndexRequest;
            pop
        15: .line 2513
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "default_language"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 17
        16: .line 2514
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "default_language"
            ldc Ljava/lang/String;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual com.mongodb.bulk.IndexRequest.defaultLanguage:(Ljava/lang/String;)Lcom/mongodb/bulk/IndexRequest;
            pop
        17: .line 2516
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "language_override"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 19
        18: .line 2517
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "language_override"
            ldc Ljava/lang/String;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual com.mongodb.bulk.IndexRequest.languageOverride:(Ljava/lang/String;)Lcom/mongodb/bulk/IndexRequest;
            pop
        19: .line 2519
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "textIndexVersion"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 21
        20: .line 2520
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "textIndexVersion"
            ldc Ljava/lang/Integer;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual com.mongodb.bulk.IndexRequest.textVersion:(Ljava/lang/Integer;)Lcom/mongodb/bulk/IndexRequest;
            pop
        21: .line 2522
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "2dsphereIndexVersion"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 23
        22: .line 2523
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "2dsphereIndexVersion"
            ldc Ljava/lang/Integer;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual com.mongodb.bulk.IndexRequest.sphereVersion:(Ljava/lang/Integer;)Lcom/mongodb/bulk/IndexRequest;
            pop
        23: .line 2525
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "bits"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 25
        24: .line 2526
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "bits"
            ldc Ljava/lang/Integer;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual com.mongodb.bulk.IndexRequest.bits:(Ljava/lang/Integer;)Lcom/mongodb/bulk/IndexRequest;
            pop
        25: .line 2528
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "min"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 27
        26: .line 2529
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "min"
            ldc Ljava/lang/Double;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Double
            invokevirtual com.mongodb.bulk.IndexRequest.min:(Ljava/lang/Double;)Lcom/mongodb/bulk/IndexRequest;
            pop
        27: .line 2531
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "max"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 29
        28: .line 2532
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "max"
            ldc Ljava/lang/Double;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Double
            invokevirtual com.mongodb.bulk.IndexRequest.max:(Ljava/lang/Double;)Lcom/mongodb/bulk/IndexRequest;
            pop
        29: .line 2534
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "bucketSize"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 31
        30: .line 2535
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "bucketSize"
            ldc Ljava/lang/Double;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Double
            invokevirtual com.mongodb.bulk.IndexRequest.bucketSize:(Ljava/lang/Double;)Lcom/mongodb/bulk/IndexRequest;
            pop
        31: .line 2537
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "dropDups"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 33
        32: .line 2538
            aload 3 /* request */
            aload 0 /* this */
            aload 2 /* options */
            ldc "dropDups"
            ldc Ljava/lang/Boolean;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokevirtual com.mongodb.bulk.IndexRequest.dropDups:(Z)Lcom/mongodb/bulk/IndexRequest;
            pop
        33: .line 2540
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "storageEngine"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 35
        34: .line 2541
            aload 3 /* request */
            aload 0 /* this */
            aload 0 /* this */
            aload 2 /* options */
            ldc "storageEngine"
            ldc Lcom/mongodb/DBObject;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.mongodb.DBObject
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.bulk.IndexRequest.storageEngine:(Lorg/bson/BsonDocument;)Lcom/mongodb/bulk/IndexRequest;
            pop
        35: .line 2543
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "partialFilterExpression"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 37
        36: .line 2544
            aload 3 /* request */
            aload 0 /* this */
            aload 0 /* this */
            aload 2 /* options */
            ldc "partialFilterExpression"
            ldc Lcom/mongodb/DBObject;
            invokevirtual com.mongodb.DBCollection.convertOptionsToType:(Lcom/mongodb/DBObject;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.mongodb.DBObject
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.bulk.IndexRequest.partialFilterExpression:(Lorg/bson/BsonDocument;)Lcom/mongodb/bulk/IndexRequest;
            pop
        37: .line 2546
      StackMap locals:
      StackMap stack:
            aload 2 /* options */
            ldc "collation"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 39
        38: .line 2547
            aload 3 /* request */
            aload 2 /* options */
            invokestatic com.mongodb.DBObjectCollationHelper.createCollationFromOptions:(Lcom/mongodb/DBObject;)Lcom/mongodb/client/model/Collation;
            invokevirtual com.mongodb.bulk.IndexRequest.collation:(Lcom/mongodb/client/model/Collation;)Lcom/mongodb/bulk/IndexRequest;
            pop
        39: .line 2549
      StackMap locals:
      StackMap stack:
            new com.mongodb.operation.CreateIndexesOperation
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getNamespace:()Lcom/mongodb/MongoNamespace;
            aload 3 /* request */
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            aload 0 /* this */
            getfield com.mongodb.DBCollection.writeConcern:Lcom/mongodb/WriteConcern;
            invokespecial com.mongodb.operation.CreateIndexesOperation.<init>:(Lcom/mongodb/MongoNamespace;Ljava/util/List;Lcom/mongodb/WriteConcern;)V
            areturn
        end local 3 // com.mongodb.bulk.IndexRequest request
        end local 2 // com.mongodb.DBObject options
        end local 1 // com.mongodb.DBObject key
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   40     0     this  Lcom/mongodb/DBCollection;
            0   40     1      key  Lcom/mongodb/DBObject;
            0   40     2  options  Lcom/mongodb/DBObject;
            1   40     3  request  Lcom/mongodb/bulk/IndexRequest;
    MethodParameters:
         Name  Flags
      key      final
      options  final

  org.bson.codecs.Codec<com.mongodb.DBObject> getObjectCodec();
    descriptor: ()Lorg/bson/codecs/Codec;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2553
            aload 0 /* this */
            getfield com.mongodb.DBCollection.objectCodec:Lcom/mongodb/CompoundDBObjectCodec;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;
    Signature: ()Lorg/bson/codecs/Codec<Lcom/mongodb/DBObject;>;

  com.mongodb.client.internal.OperationExecutor getExecutor();
    descriptor: ()Lcom/mongodb/client/internal/OperationExecutor;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2557
            aload 0 /* this */
            getfield com.mongodb.DBCollection.executor:Lcom/mongodb/client/internal/OperationExecutor;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  com.mongodb.MongoNamespace getNamespace();
    descriptor: ()Lcom/mongodb/MongoNamespace;
    flags: (0x0000) 
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2561
            new com.mongodb.MongoNamespace
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getDB:()Lcom/mongodb/DB;
            invokevirtual com.mongodb.DB.getName:()Ljava/lang/String;
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getName:()Ljava/lang/String;
            invokespecial com.mongodb.MongoNamespace.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  com.mongodb.connection.BufferProvider getBufferPool();
    descriptor: ()Lcom/mongodb/connection/BufferProvider;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.DBCollection this
         0: .line 2565
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getDB:()Lcom/mongodb/DB;
            invokevirtual com.mongodb.DB.getBufferPool:()Lcom/mongodb/connection/BufferProvider;
            areturn
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/DBCollection;

  org.bson.BsonDocument wrapAllowNull(com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject document
         0: .line 2570
            aload 1 /* document */
            ifnonnull 2
         1: .line 2571
            aconst_null
            areturn
         2: .line 2573
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* document */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            areturn
        end local 1 // com.mongodb.DBObject document
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/mongodb/DBCollection;
            0    3     1  document  Lcom/mongodb/DBObject;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
    MethodParameters:
          Name  Flags
      document  final

  java.util.List<org.bson.BsonDocument> wrapAllowNull(java.util.List<? extends com.mongodb.DBObject>, com.mongodb.DBEncoder);
    descriptor: (Ljava/util/List;Lcom/mongodb/DBEncoder;)Ljava/util/List;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List documentList
        start local 2 // com.mongodb.DBEncoder encoder
         0: .line 2578
            aload 0 /* this */
            aload 1 /* documentList */
            aload 2 /* encoder */
            ifnonnull 1
            aconst_null
            goto 2
      StackMap locals: com.mongodb.DBCollection java.util.List com.mongodb.DBEncoder
      StackMap stack: com.mongodb.DBCollection java.util.List
         1: new com.mongodb.DBEncoderAdapter
            dup
            aload 2 /* encoder */
            invokespecial com.mongodb.DBEncoderAdapter.<init>:(Lcom/mongodb/DBEncoder;)V
      StackMap locals: com.mongodb.DBCollection java.util.List com.mongodb.DBEncoder
      StackMap stack: com.mongodb.DBCollection java.util.List com.mongodb.DBEncoderAdapter
         2: invokevirtual com.mongodb.DBCollection.wrapAllowNull:(Ljava/util/List;Lorg/bson/codecs/Encoder;)Ljava/util/List;
            areturn
        end local 2 // com.mongodb.DBEncoder encoder
        end local 1 // java.util.List documentList
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lcom/mongodb/DBCollection;
            0    3     1  documentList  Ljava/util/List<+Lcom/mongodb/DBObject;>;
            0    3     2       encoder  Lcom/mongodb/DBEncoder;
    Signature: (Ljava/util/List<+Lcom/mongodb/DBObject;>;Lcom/mongodb/DBEncoder;)Ljava/util/List<Lorg/bson/BsonDocument;>;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
        com.mongodb.lang.Nullable()
    MethodParameters:
              Name  Flags
      documentList  final
      encoder       final

  java.util.List<org.bson.BsonDocument> wrapAllowNull(java.util.List<? extends com.mongodb.DBObject>, org.bson.codecs.Encoder<com.mongodb.DBObject>);
    descriptor: (Ljava/util/List;Lorg/bson/codecs/Encoder;)Ljava/util/List;
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // java.util.List documentList
        start local 2 // org.bson.codecs.Encoder encoder
         0: .line 2583
            aload 1 /* documentList */
            ifnonnull 2
         1: .line 2584
            aconst_null
            areturn
         2: .line 2586
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            aload 1 /* documentList */
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 3 /* wrappedDocumentList */
        start local 3 // java.util.List wrappedDocumentList
         3: .line 2587
            aload 1 /* documentList */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 8
      StackMap locals: com.mongodb.DBCollection java.util.List org.bson.codecs.Encoder java.util.List top java.util.Iterator
      StackMap stack:
         4: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.mongodb.DBObject
            astore 4 /* cur */
        start local 4 // com.mongodb.DBObject cur
         5: .line 2588
            aload 3 /* wrappedDocumentList */
            aload 2 /* encoder */
            ifnonnull 6
            aload 0 /* this */
            aload 4 /* cur */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            goto 7
      StackMap locals: com.mongodb.DBCollection java.util.List org.bson.codecs.Encoder java.util.List com.mongodb.DBObject java.util.Iterator
      StackMap stack: java.util.List
         6: aload 0 /* this */
            aload 4 /* cur */
            aload 2 /* encoder */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;Lorg/bson/codecs/Encoder;)Lorg/bson/BsonDocument;
      StackMap locals: com.mongodb.DBCollection java.util.List org.bson.codecs.Encoder java.util.List com.mongodb.DBObject java.util.Iterator
      StackMap stack: java.util.List org.bson.BsonDocument
         7: invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // com.mongodb.DBObject cur
         8: .line 2587
      StackMap locals: com.mongodb.DBCollection java.util.List org.bson.codecs.Encoder java.util.List top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         9: .line 2590
            aload 3 /* wrappedDocumentList */
            areturn
        end local 3 // java.util.List wrappedDocumentList
        end local 2 // org.bson.codecs.Encoder encoder
        end local 1 // java.util.List documentList
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   10     0                 this  Lcom/mongodb/DBCollection;
            0   10     1         documentList  Ljava/util/List<+Lcom/mongodb/DBObject;>;
            0   10     2              encoder  Lorg/bson/codecs/Encoder<Lcom/mongodb/DBObject;>;
            3   10     3  wrappedDocumentList  Ljava/util/List<Lorg/bson/BsonDocument;>;
            5    8     4                  cur  Lcom/mongodb/DBObject;
    Signature: (Ljava/util/List<+Lcom/mongodb/DBObject;>;Lorg/bson/codecs/Encoder<Lcom/mongodb/DBObject;>;)Ljava/util/List<Lorg/bson/BsonDocument;>;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
        com.mongodb.lang.Nullable()
    MethodParameters:
              Name  Flags
      documentList  final
      encoder       final

  org.bson.BsonDocument wrap(com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject document
         0: .line 2595
            new org.bson.BsonDocumentWrapper
            dup
            aload 1 /* document */
            aload 0 /* this */
            invokevirtual com.mongodb.DBCollection.getDefaultDBObjectCodec:()Lcom/mongodb/DBObjectCodec;
            invokespecial org.bson.BsonDocumentWrapper.<init>:(Ljava/lang/Object;Lorg/bson/codecs/Encoder;)V
            areturn
        end local 1 // com.mongodb.DBObject document
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/mongodb/DBCollection;
            0    1     1  document  Lcom/mongodb/DBObject;
    MethodParameters:
          Name  Flags
      document  final

  org.bson.BsonDocument wrap(com.mongodb.DBObject, com.mongodb.DBEncoder);
    descriptor: (Lcom/mongodb/DBObject;Lcom/mongodb/DBEncoder;)Lorg/bson/BsonDocument;
    flags: (0x0000) 
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject document
        start local 2 // com.mongodb.DBEncoder encoder
         0: .line 2599
            aload 2 /* encoder */
            ifnonnull 2
         1: .line 2600
            aload 0 /* this */
            aload 1 /* document */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            areturn
         2: .line 2602
      StackMap locals:
      StackMap stack:
            new org.bson.BsonDocumentWrapper
            dup
            aload 1 /* document */
            new com.mongodb.DBEncoderAdapter
            dup
            aload 2 /* encoder */
            invokespecial com.mongodb.DBEncoderAdapter.<init>:(Lcom/mongodb/DBEncoder;)V
            invokespecial org.bson.BsonDocumentWrapper.<init>:(Ljava/lang/Object;Lorg/bson/codecs/Encoder;)V
            areturn
        end local 2 // com.mongodb.DBEncoder encoder
        end local 1 // com.mongodb.DBObject document
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/mongodb/DBCollection;
            0    3     1  document  Lcom/mongodb/DBObject;
            0    3     2   encoder  Lcom/mongodb/DBEncoder;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        com.mongodb.lang.Nullable()
    MethodParameters:
          Name  Flags
      document  final
      encoder   final

  org.bson.BsonDocument wrap(com.mongodb.DBObject, org.bson.codecs.Encoder<com.mongodb.DBObject>);
    descriptor: (Lcom/mongodb/DBObject;Lorg/bson/codecs/Encoder;)Lorg/bson/BsonDocument;
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.DBCollection this
        start local 1 // com.mongodb.DBObject document
        start local 2 // org.bson.codecs.Encoder encoder
         0: .line 2607
            aload 2 /* encoder */
            ifnonnull 2
         1: .line 2608
            aload 0 /* this */
            aload 1 /* document */
            invokevirtual com.mongodb.DBCollection.wrap:(Lcom/mongodb/DBObject;)Lorg/bson/BsonDocument;
            areturn
         2: .line 2610
      StackMap locals:
      StackMap stack:
            new org.bson.BsonDocumentWrapper
            dup
            aload 1 /* document */
            aload 2 /* encoder */
            invokespecial org.bson.BsonDocumentWrapper.<init>:(Ljava/lang/Object;Lorg/bson/codecs/Encoder;)V
            areturn
        end local 2 // org.bson.codecs.Encoder encoder
        end local 1 // com.mongodb.DBObject document
        end local 0 // com.mongodb.DBCollection this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/mongodb/DBCollection;
            0    3     1  document  Lcom/mongodb/DBObject;
            0    3     2   encoder  Lorg/bson/codecs/Encoder<Lcom/mongodb/DBObject;>;
    Signature: (Lcom/mongodb/DBObject;Lorg/bson/codecs/Encoder<Lcom/mongodb/DBObject;>;)Lorg/bson/BsonDocument;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        com.mongodb.lang.Nullable()
    MethodParameters:
          Name  Flags
      document  final
      encoder   final

  static com.mongodb.WriteConcernException createWriteConcernException(com.mongodb.MongoWriteConcernException);
    descriptor: (Lcom/mongodb/MongoWriteConcernException;)Lcom/mongodb/WriteConcernException;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=1, args_size=1
        start local 0 // com.mongodb.MongoWriteConcernException e
         0: .line 2615
            new com.mongodb.WriteConcernException
            dup
            new org.bson.BsonDocument
            dup
            ldc "code"
            new org.bson.BsonInt32
            dup
            aload 0 /* e */
            invokevirtual com.mongodb.MongoWriteConcernException.getWriteConcernError:()Lcom/mongodb/bulk/WriteConcernError;
            invokevirtual com.mongodb.bulk.WriteConcernError.getCode:()I
            invokespecial org.bson.BsonInt32.<init>:(I)V
            invokespecial org.bson.BsonDocument.<init>:(Ljava/lang/String;Lorg/bson/BsonValue;)V
         1: .line 2616
            ldc "errmsg"
            new org.bson.BsonString
            dup
            aload 0 /* e */
            invokevirtual com.mongodb.MongoWriteConcernException.getWriteConcernError:()Lcom/mongodb/bulk/WriteConcernError;
            invokevirtual com.mongodb.bulk.WriteConcernError.getMessage:()Ljava/lang/String;
            invokespecial org.bson.BsonString.<init>:(Ljava/lang/String;)V
            invokevirtual org.bson.BsonDocument.append:(Ljava/lang/String;Lorg/bson/BsonValue;)Lorg/bson/BsonDocument;
         2: .line 2617
            aload 0 /* e */
            invokevirtual com.mongodb.MongoWriteConcernException.getServerAddress:()Lcom/mongodb/ServerAddress;
         3: .line 2618
            aload 0 /* e */
            invokevirtual com.mongodb.MongoWriteConcernException.getWriteResult:()Lcom/mongodb/WriteConcernResult;
         4: .line 2615
            invokespecial com.mongodb.WriteConcernException.<init>:(Lorg/bson/BsonDocument;Lcom/mongodb/ServerAddress;Lcom/mongodb/WriteConcernResult;)V
            areturn
        end local 0 // com.mongodb.MongoWriteConcernException e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0     e  Lcom/mongodb/MongoWriteConcernException;
    MethodParameters:
      Name  Flags
      e     final

  static int[] $SWITCH_TABLE$com$mongodb$MapReduceCommand$OutputType();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 126
            getstatic com.mongodb.DBCollection.$SWITCH_TABLE$com$mongodb$MapReduceCommand$OutputType:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic com.mongodb.MapReduceCommand$OutputType.values:()[Lcom/mongodb/MapReduceCommand$OutputType;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic com.mongodb.MapReduceCommand$OutputType.INLINE:Lcom/mongodb/MapReduceCommand$OutputType;
            invokevirtual com.mongodb.MapReduceCommand$OutputType.ordinal:()I
            iconst_4
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic com.mongodb.MapReduceCommand$OutputType.MERGE:Lcom/mongodb/MapReduceCommand$OutputType;
            invokevirtual com.mongodb.MapReduceCommand$OutputType.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic com.mongodb.MapReduceCommand$OutputType.REDUCE:Lcom/mongodb/MapReduceCommand$OutputType;
            invokevirtual com.mongodb.MapReduceCommand$OutputType.ordinal:()I
            iconst_3
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic com.mongodb.MapReduceCommand$OutputType.REPLACE:Lcom/mongodb/MapReduceCommand$OutputType;
            invokevirtual com.mongodb.MapReduceCommand$OutputType.ordinal:()I
            iconst_1
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            dup
            putstatic com.mongodb.DBCollection.$SWITCH_TABLE$com$mongodb$MapReduceCommand$OutputType:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
}
SourceFile: "DBCollection.java"
NestMembers:
  com.mongodb.DBCollection$1  com.mongodb.DBCollection$2  com.mongodb.DBCollection$3
InnerClasses:
  public Builder = com.mongodb.AggregationOptions$Builder of com.mongodb.AggregationOptions
  public final OutputMode = com.mongodb.AggregationOptions$OutputMode of com.mongodb.AggregationOptions
  OptionHolder = com.mongodb.Bytes$OptionHolder of com.mongodb.Bytes
  com.mongodb.DBCollection$1
  com.mongodb.DBCollection$2
  com.mongodb.DBCollection$3
  public final OutputType = com.mongodb.MapReduceCommand$OutputType of com.mongodb.MapReduceCommand
  public final Type = com.mongodb.bulk.WriteRequest$Type of com.mongodb.bulk.WriteRequest
  public final Builder = org.bson.codecs.DecoderContext$Builder of org.bson.codecs.DecoderContext
    RuntimeVisibleAnnotations: 
      com.mongodb.annotations.ThreadSafe()