class com.mongodb.operation.FindOperation$1 implements com.mongodb.operation.OperationHelper$CallableWithSource<com.mongodb.operation.BatchCursor<T>>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.mongodb.operation.FindOperation$1
  super_class: java.lang.Object
{
  final com.mongodb.operation.FindOperation this$0;
    descriptor: Lcom/mongodb/operation/FindOperation;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  private final com.mongodb.binding.ReadBinding val$binding;
    descriptor: Lcom/mongodb/binding/ReadBinding;
    flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC

  void <init>(com.mongodb.operation.FindOperation, com.mongodb.binding.ReadBinding);
    descriptor: (Lcom/mongodb/operation/FindOperation;Lcom/mongodb/binding/ReadBinding;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.mongodb.operation.FindOperation$1 this
         0: .line 725
            aload 0 /* this */
            aload 1
            putfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            aload 0 /* this */
            aload 2
            putfield com.mongodb.operation.FindOperation$1.val$binding:Lcom/mongodb/binding/ReadBinding;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.mongodb.operation.FindOperation$1 this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/FindOperation$1;
    MethodParameters:
             Name  Flags
      this$0       final
      val$binding  final

  public com.mongodb.operation.BatchCursor<T> call(com.mongodb.binding.ConnectionSource);
    descriptor: (Lcom/mongodb/binding/ConnectionSource;)Lcom/mongodb/operation/BatchCursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=14, locals=6, args_size=2
        start local 0 // com.mongodb.operation.FindOperation$1 this
        start local 1 // com.mongodb.binding.ConnectionSource source
         0: .line 728
            aload 1 /* source */
            invokeinterface com.mongodb.binding.ConnectionSource.getConnection:()Lcom/mongodb/connection/Connection;
            astore 2 /* connection */
        start local 2 // com.mongodb.connection.Connection connection
         1: .line 729
            aload 2 /* connection */
            invokeinterface com.mongodb.connection.Connection.getDescription:()Lcom/mongodb/connection/ConnectionDescription;
            invokestatic com.mongodb.internal.operation.ServerVersionHelper.serverIsAtLeastVersionThreeDotTwo:(Lcom/mongodb/connection/ConnectionDescription;)Z
            ifeq 9
         2: .line 731
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.val$binding:Lcom/mongodb/binding/ReadBinding;
            aload 1 /* source */
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            getfield com.mongodb.operation.FindOperation.namespace:Lcom/mongodb/MongoNamespace;
            invokevirtual com.mongodb.MongoNamespace.getDatabaseName:()Ljava/lang/String;
         3: .line 732
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.val$binding:Lcom/mongodb/binding/ReadBinding;
            invokeinterface com.mongodb.binding.ReadBinding.getSessionContext:()Lcom/mongodb/session/SessionContext;
            invokevirtual com.mongodb.operation.FindOperation.getCommandCreator:(Lcom/mongodb/session/SessionContext;)Lcom/mongodb/operation/CommandOperationHelper$CommandCreator;
         4: .line 733
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            getfield com.mongodb.operation.FindOperation.decoder:Lorg/bson/codecs/Decoder;
            ldc "firstBatch"
            invokestatic com.mongodb.operation.CommandResultDocumentCodec.create:(Lorg/bson/codecs/Decoder;Ljava/lang/String;)Lorg/bson/codecs/Codec;
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            invokevirtual com.mongodb.operation.FindOperation.transformer:()Lcom/mongodb/operation/CommandOperationHelper$CommandReadTransformer;
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            getfield com.mongodb.operation.FindOperation.retryReads:Z
            aload 2 /* connection */
         5: .line 731
            invokestatic com.mongodb.operation.CommandOperationHelper.executeCommandWithConnection:(Lcom/mongodb/binding/ReadBinding;Lcom/mongodb/binding/ConnectionSource;Ljava/lang/String;Lcom/mongodb/operation/CommandOperationHelper$CommandCreator;Lorg/bson/codecs/Decoder;Lcom/mongodb/operation/CommandOperationHelper$CommandReadTransformer;ZLcom/mongodb/connection/Connection;)Ljava/lang/Object;
            checkcast com.mongodb.operation.BatchCursor
         6: areturn
         7: .line 734
      StackMap locals: com.mongodb.operation.FindOperation$1 com.mongodb.binding.ConnectionSource com.mongodb.connection.Connection
      StackMap stack: com.mongodb.MongoCommandException
            astore 3 /* e */
        start local 3 // com.mongodb.MongoCommandException e
         8: .line 735
            new com.mongodb.MongoQueryException
            dup
            aload 3 /* e */
            invokespecial com.mongodb.MongoQueryException.<init>:(Lcom/mongodb/MongoCommandException;)V
            athrow
        end local 3 // com.mongodb.MongoCommandException e
         9: .line 739
      StackMap locals:
      StackMap stack:
            aload 2 /* connection */
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.val$binding:Lcom/mongodb/binding/ReadBinding;
            invokeinterface com.mongodb.binding.ReadBinding.getSessionContext:()Lcom/mongodb/session/SessionContext;
            invokeinterface com.mongodb.session.SessionContext.getReadConcern:()Lcom/mongodb/ReadConcern;
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            getfield com.mongodb.operation.FindOperation.collation:Lcom/mongodb/client/model/Collation;
            invokestatic com.mongodb.operation.OperationHelper.validateReadConcernAndCollation:(Lcom/mongodb/connection/Connection;Lcom/mongodb/ReadConcern;Lcom/mongodb/client/model/Collation;)V
        10: .line 740
            aload 2 /* connection */
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            getfield com.mongodb.operation.FindOperation.namespace:Lcom/mongodb/MongoNamespace;
        11: .line 741
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            aload 2 /* connection */
            invokeinterface com.mongodb.connection.Connection.getDescription:()Lcom/mongodb/connection/ConnectionDescription;
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.val$binding:Lcom/mongodb/binding/ReadBinding;
            invokeinterface com.mongodb.binding.ReadBinding.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokevirtual com.mongodb.operation.FindOperation.asDocument:(Lcom/mongodb/connection/ConnectionDescription;Lcom/mongodb/ReadPreference;)Lorg/bson/BsonDocument;
        12: .line 742
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            getfield com.mongodb.operation.FindOperation.projection:Lorg/bson/BsonDocument;
        13: .line 743
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            getfield com.mongodb.operation.FindOperation.skip:I
        14: .line 744
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            getfield com.mongodb.operation.FindOperation.limit:I
        15: .line 745
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            getfield com.mongodb.operation.FindOperation.batchSize:I
        16: .line 746
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            invokevirtual com.mongodb.operation.FindOperation.isSlaveOk:()Z
            ifne 17
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.val$binding:Lcom/mongodb/binding/ReadBinding;
            invokeinterface com.mongodb.binding.ReadBinding.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokevirtual com.mongodb.ReadPreference.isSlaveOk:()Z
            ifne 17
            iconst_0
            goto 18
      StackMap locals: com.mongodb.operation.FindOperation$1 com.mongodb.binding.ConnectionSource com.mongodb.connection.Connection
      StackMap stack: com.mongodb.connection.Connection com.mongodb.MongoNamespace org.bson.BsonDocument org.bson.BsonDocument int int int
        17: iconst_1
        18: .line 747
      StackMap locals: com.mongodb.operation.FindOperation$1 com.mongodb.binding.ConnectionSource com.mongodb.connection.Connection
      StackMap stack: com.mongodb.connection.Connection com.mongodb.MongoNamespace org.bson.BsonDocument org.bson.BsonDocument int int int int
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            invokevirtual com.mongodb.operation.FindOperation.isTailableCursor:()Z
        19: .line 748
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            invokevirtual com.mongodb.operation.FindOperation.isAwaitData:()Z
        20: .line 749
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            invokevirtual com.mongodb.operation.FindOperation.isNoCursorTimeout:()Z
        21: .line 750
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            invokevirtual com.mongodb.operation.FindOperation.isPartial:()Z
        22: .line 751
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            invokevirtual com.mongodb.operation.FindOperation.isOplogReplay:()Z
        23: .line 752
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            getfield com.mongodb.operation.FindOperation.decoder:Lorg/bson/codecs/Decoder;
        24: .line 740
            invokeinterface com.mongodb.connection.Connection.query:(Lcom/mongodb/MongoNamespace;Lorg/bson/BsonDocument;Lorg/bson/BsonDocument;IIIZZZZZZLorg/bson/codecs/Decoder;)Lcom/mongodb/connection/QueryResult;
            astore 3 /* queryResult */
        start local 3 // com.mongodb.connection.QueryResult queryResult
        25: .line 753
            new com.mongodb.operation.QueryBatchCursor
            dup
            aload 3 /* queryResult */
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            getfield com.mongodb.operation.FindOperation.limit:I
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            getfield com.mongodb.operation.FindOperation.batchSize:I
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            invokevirtual com.mongodb.operation.FindOperation.getMaxTimeForCursor:()J
            aload 0 /* this */
            getfield com.mongodb.operation.FindOperation$1.this$0:Lcom/mongodb/operation/FindOperation;
            getfield com.mongodb.operation.FindOperation.decoder:Lorg/bson/codecs/Decoder;
            aload 1 /* source */
            aload 2 /* connection */
            invokespecial com.mongodb.operation.QueryBatchCursor.<init>:(Lcom/mongodb/connection/QueryResult;IIJLorg/bson/codecs/Decoder;Lcom/mongodb/binding/ConnectionSource;Lcom/mongodb/connection/Connection;)V
            astore 5
        26: .line 755
            aload 2 /* connection */
            invokeinterface com.mongodb.connection.Connection.release:()V
        27: .line 753
            aload 5
            areturn
        end local 3 // com.mongodb.connection.QueryResult queryResult
        28: .line 754
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
        29: .line 755
            aload 2 /* connection */
            invokeinterface com.mongodb.connection.Connection.release:()V
        30: .line 756
            aload 4
            athrow
        end local 2 // com.mongodb.connection.Connection connection
        end local 1 // com.mongodb.binding.ConnectionSource source
        end local 0 // com.mongodb.operation.FindOperation$1 this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   31     0         this  Lcom/mongodb/operation/FindOperation$1;
            0   31     1       source  Lcom/mongodb/binding/ConnectionSource;
            1   31     2   connection  Lcom/mongodb/connection/Connection;
            8    9     3            e  Lcom/mongodb/MongoCommandException;
           25   28     3  queryResult  Lcom/mongodb/connection/QueryResult<TT;>;
      Exception table:
        from    to  target  type
           2     6       7  Class com.mongodb.MongoCommandException
           9    26      28  any
    Signature: (Lcom/mongodb/binding/ConnectionSource;)Lcom/mongodb/operation/BatchCursor<TT;>;
    MethodParameters:
        Name  Flags
      source  final

  public java.lang.Object call(com.mongodb.binding.ConnectionSource);
    descriptor: (Lcom/mongodb/binding/ConnectionSource;)Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual com.mongodb.operation.FindOperation$1.call:(Lcom/mongodb/binding/ConnectionSource;)Lcom/mongodb/operation/BatchCursor;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Ljava/lang/Object;Lcom/mongodb/operation/OperationHelper$CallableWithSource<Lcom/mongodb/operation/BatchCursor<TT;>;>;
SourceFile: "FindOperation.java"
EnclosingMethod: com.mongodb.operation.FindOperation.execute:(Lcom/mongodb/binding/ReadBinding;)Lcom/mongodb/operation/BatchCursor;
NestHost: com.mongodb.operation.FindOperation
InnerClasses:
  abstract CommandCreator = com.mongodb.operation.CommandOperationHelper$CommandCreator of com.mongodb.operation.CommandOperationHelper
  abstract CommandReadTransformer = com.mongodb.operation.CommandOperationHelper$CommandReadTransformer of com.mongodb.operation.CommandOperationHelper
  com.mongodb.operation.FindOperation$1
  abstract CallableWithSource = com.mongodb.operation.OperationHelper$CallableWithSource of com.mongodb.operation.OperationHelper