abstract class com.mongodb.async.client.MongoIterableImpl<TResult> implements com.mongodb.async.client.MongoIterable<TResult>
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.mongodb.async.client.MongoIterableImpl
  super_class: java.lang.Object
{
  private final com.mongodb.async.client.ClientSession clientSession;
    descriptor: Lcom/mongodb/async/client/ClientSession;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

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

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

  private java.lang.Integer batchSize;
    descriptor: Ljava/lang/Integer;
    flags: (0x0002) ACC_PRIVATE

  void <init>(com.mongodb.async.client.ClientSession, com.mongodb.async.client.OperationExecutor, com.mongodb.ReadConcern, com.mongodb.ReadPreference, boolean);
    descriptor: (Lcom/mongodb/async/client/ClientSession;Lcom/mongodb/async/client/OperationExecutor;Lcom/mongodb/ReadConcern;Lcom/mongodb/ReadPreference;Z)V
    flags: (0x0000) 
    Code:
      stack=3, locals=6, args_size=6
        start local 0 // com.mongodb.async.client.MongoIterableImpl this
        start local 1 // com.mongodb.async.client.ClientSession clientSession
        start local 2 // com.mongodb.async.client.OperationExecutor executor
        start local 3 // com.mongodb.ReadConcern readConcern
        start local 4 // com.mongodb.ReadPreference readPreference
        start local 5 // boolean retryReads
         0: .line 42
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 44
            aload 0 /* this */
            aload 1 /* clientSession */
            putfield com.mongodb.async.client.MongoIterableImpl.clientSession:Lcom/mongodb/async/client/ClientSession;
         2: .line 45
            aload 0 /* this */
            ldc "executor"
            aload 2 /* executor */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.mongodb.async.client.OperationExecutor
            putfield com.mongodb.async.client.MongoIterableImpl.executor:Lcom/mongodb/async/client/OperationExecutor;
         3: .line 46
            aload 0 /* this */
            ldc "readConcern"
            aload 3 /* readConcern */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.mongodb.ReadConcern
            putfield com.mongodb.async.client.MongoIterableImpl.readConcern:Lcom/mongodb/ReadConcern;
         4: .line 47
            aload 0 /* this */
            ldc "readPreference"
            aload 4 /* readPreference */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.mongodb.ReadPreference
            putfield com.mongodb.async.client.MongoIterableImpl.readPreference:Lcom/mongodb/ReadPreference;
         5: .line 48
            aload 0 /* this */
            ldc "retryReads"
            iload 5 /* retryReads */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            putfield com.mongodb.async.client.MongoIterableImpl.retryReads:Z
         6: .line 49
            return
        end local 5 // boolean retryReads
        end local 4 // com.mongodb.ReadPreference readPreference
        end local 3 // com.mongodb.ReadConcern readConcern
        end local 2 // com.mongodb.async.client.OperationExecutor executor
        end local 1 // com.mongodb.async.client.ClientSession clientSession
        end local 0 // com.mongodb.async.client.MongoIterableImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0            this  Lcom/mongodb/async/client/MongoIterableImpl<TTResult;>;
            0    7     1   clientSession  Lcom/mongodb/async/client/ClientSession;
            0    7     2        executor  Lcom/mongodb/async/client/OperationExecutor;
            0    7     3     readConcern  Lcom/mongodb/ReadConcern;
            0    7     4  readPreference  Lcom/mongodb/ReadPreference;
            0    7     5      retryReads  Z
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
      2:
      3:
      4:
    MethodParameters:
                Name  Flags
      clientSession   final
      executor        final
      readConcern     final
      readPreference  final
      retryReads      final

  abstract com.mongodb.operation.AsyncReadOperation<com.mongodb.async.AsyncBatchCursor<TResult>> asAsyncReadOperation();
    descriptor: ()Lcom/mongodb/operation/AsyncReadOperation;
    flags: (0x0400) ACC_ABSTRACT
    Signature: ()Lcom/mongodb/operation/AsyncReadOperation<Lcom/mongodb/async/AsyncBatchCursor<TTResult;>;>;

  public com.mongodb.async.client.ClientSession getClientSession();
    descriptor: ()Lcom/mongodb/async/client/ClientSession;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.async.client.MongoIterableImpl this
         0: .line 54
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoIterableImpl.clientSession:Lcom/mongodb/async/client/ClientSession;
            areturn
        end local 0 // com.mongodb.async.client.MongoIterableImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/async/client/MongoIterableImpl<TTResult;>;

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

  com.mongodb.ReadPreference getReadPreference();
    descriptor: ()Lcom/mongodb/ReadPreference;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.async.client.MongoIterableImpl this
         0: .line 62
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoIterableImpl.readPreference:Lcom/mongodb/ReadPreference;
            areturn
        end local 0 // com.mongodb.async.client.MongoIterableImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/async/client/MongoIterableImpl<TTResult;>;

  com.mongodb.ReadConcern getReadConcern();
    descriptor: ()Lcom/mongodb/ReadConcern;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.async.client.MongoIterableImpl this
         0: .line 66
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoIterableImpl.readConcern:Lcom/mongodb/ReadConcern;
            areturn
        end local 0 // com.mongodb.async.client.MongoIterableImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/async/client/MongoIterableImpl<TTResult;>;

  boolean getRetryReads();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.async.client.MongoIterableImpl this
         0: .line 70
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoIterableImpl.retryReads:Z
            ireturn
        end local 0 // com.mongodb.async.client.MongoIterableImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/async/client/MongoIterableImpl<TTResult;>;

  public java.lang.Integer getBatchSize();
    descriptor: ()Ljava/lang/Integer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.async.client.MongoIterableImpl this
         0: .line 76
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoIterableImpl.batchSize:Ljava/lang/Integer;
            areturn
        end local 0 // com.mongodb.async.client.MongoIterableImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/async/client/MongoIterableImpl<TTResult;>;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()

  public void forEach(com.mongodb.Block<? super TResult>, com.mongodb.async.SingleResultCallback<java.lang.Void>);
    descriptor: (Lcom/mongodb/Block;Lcom/mongodb/async/SingleResultCallback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // com.mongodb.async.client.MongoIterableImpl this
        start local 1 // com.mongodb.Block block
        start local 2 // com.mongodb.async.SingleResultCallback callback
         0: .line 81
            ldc "block"
            aload 1 /* block */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 82
            ldc "callback"
            aload 2 /* callback */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 83
            aload 0 /* this */
            new com.mongodb.async.client.MongoIterableImpl$1
            dup
            aload 0 /* this */
            aload 2 /* callback */
            aload 1 /* block */
            invokespecial com.mongodb.async.client.MongoIterableImpl$1.<init>:(Lcom/mongodb/async/client/MongoIterableImpl;Lcom/mongodb/async/SingleResultCallback;Lcom/mongodb/Block;)V
            invokevirtual com.mongodb.async.client.MongoIterableImpl.batchCursor:(Lcom/mongodb/async/SingleResultCallback;)V
         3: .line 93
            return
        end local 2 // com.mongodb.async.SingleResultCallback callback
        end local 1 // com.mongodb.Block block
        end local 0 // com.mongodb.async.client.MongoIterableImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/mongodb/async/client/MongoIterableImpl<TTResult;>;
            0    4     1     block  Lcom/mongodb/Block<-TTResult;>;
            0    4     2  callback  Lcom/mongodb/async/SingleResultCallback<Ljava/lang/Void;>;
    Signature: (Lcom/mongodb/Block<-TTResult;>;Lcom/mongodb/async/SingleResultCallback<Ljava/lang/Void;>;)V
    MethodParameters:
          Name  Flags
      block     final
      callback  final

  public <A extends java.util.Collection<? super TResult>> void into(A, com.mongodb.async.SingleResultCallback<A>);
    descriptor: (Ljava/util/Collection;Lcom/mongodb/async/SingleResultCallback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // com.mongodb.async.client.MongoIterableImpl this
        start local 1 // java.util.Collection target
        start local 2 // com.mongodb.async.SingleResultCallback callback
         0: .line 97
            ldc "target"
            aload 1 /* target */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 98
            ldc "callback"
            aload 2 /* callback */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 99
            aload 0 /* this */
            new com.mongodb.async.client.MongoIterableImpl$2
            dup
            aload 0 /* this */
            aload 2 /* callback */
            aload 1 /* target */
            invokespecial com.mongodb.async.client.MongoIterableImpl$2.<init>:(Lcom/mongodb/async/client/MongoIterableImpl;Lcom/mongodb/async/SingleResultCallback;Ljava/util/Collection;)V
            invokevirtual com.mongodb.async.client.MongoIterableImpl.batchCursor:(Lcom/mongodb/async/SingleResultCallback;)V
         3: .line 123
            return
        end local 2 // com.mongodb.async.SingleResultCallback callback
        end local 1 // java.util.Collection target
        end local 0 // com.mongodb.async.client.MongoIterableImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/mongodb/async/client/MongoIterableImpl<TTResult;>;
            0    4     1    target  TA;
            0    4     2  callback  Lcom/mongodb/async/SingleResultCallback<TA;>;
    Signature: <A::Ljava/util/Collection<-TTResult;>;>(TA;Lcom/mongodb/async/SingleResultCallback<TA;>;)V
    MethodParameters:
          Name  Flags
      target    final
      callback  final

  public void first(com.mongodb.async.SingleResultCallback<TResult>);
    descriptor: (Lcom/mongodb/async/SingleResultCallback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.mongodb.async.client.MongoIterableImpl this
        start local 1 // com.mongodb.async.SingleResultCallback callback
         0: .line 127
            ldc "callback"
            aload 1 /* callback */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 128
            aload 0 /* this */
            new com.mongodb.async.client.MongoIterableImpl$3
            dup
            aload 0 /* this */
            aload 1 /* callback */
            invokespecial com.mongodb.async.client.MongoIterableImpl$3.<init>:(Lcom/mongodb/async/client/MongoIterableImpl;Lcom/mongodb/async/SingleResultCallback;)V
            invokevirtual com.mongodb.async.client.MongoIterableImpl.batchCursor:(Lcom/mongodb/async/SingleResultCallback;)V
         2: .line 151
            return
        end local 1 // com.mongodb.async.SingleResultCallback callback
        end local 0 // com.mongodb.async.client.MongoIterableImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/mongodb/async/client/MongoIterableImpl<TTResult;>;
            0    3     1  callback  Lcom/mongodb/async/SingleResultCallback<TTResult;>;
    Signature: (Lcom/mongodb/async/SingleResultCallback<TTResult;>;)V
    MethodParameters:
          Name  Flags
      callback  final

  public <U> com.mongodb.async.client.MongoIterable<U> map(com.mongodb.Function<TResult, U>);
    descriptor: (Lcom/mongodb/Function;)Lcom/mongodb/async/client/MongoIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.async.client.MongoIterableImpl this
        start local 1 // com.mongodb.Function mapper
         0: .line 155
            new com.mongodb.async.client.MappingIterable
            dup
            aload 0 /* this */
            aload 1 /* mapper */
            invokespecial com.mongodb.async.client.MappingIterable.<init>:(Lcom/mongodb/async/client/MongoIterable;Lcom/mongodb/Function;)V
            areturn
        end local 1 // com.mongodb.Function mapper
        end local 0 // com.mongodb.async.client.MongoIterableImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/mongodb/async/client/MongoIterableImpl<TTResult;>;
            0    1     1  mapper  Lcom/mongodb/Function<TTResult;TU;>;
    Signature: <U:Ljava/lang/Object;>(Lcom/mongodb/Function<TTResult;TU;>;)Lcom/mongodb/async/client/MongoIterable<TU;>;
    MethodParameters:
        Name  Flags
      mapper  final

  public com.mongodb.async.client.MongoIterable<TResult> batchSize(int);
    descriptor: (I)Lcom/mongodb/async/client/MongoIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.async.client.MongoIterableImpl this
        start local 1 // int batchSize
         0: .line 160
            aload 0 /* this */
            iload 1 /* batchSize */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            putfield com.mongodb.async.client.MongoIterableImpl.batchSize:Ljava/lang/Integer;
         1: .line 161
            aload 0 /* this */
            areturn
        end local 1 // int batchSize
        end local 0 // com.mongodb.async.client.MongoIterableImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/mongodb/async/client/MongoIterableImpl<TTResult;>;
            0    2     1  batchSize  I
    Signature: (I)Lcom/mongodb/async/client/MongoIterable<TTResult;>;
    MethodParameters:
           Name  Flags
      batchSize  final

  public void batchCursor(com.mongodb.async.SingleResultCallback<com.mongodb.async.AsyncBatchCursor<TResult>>);
    descriptor: (Lcom/mongodb/async/SingleResultCallback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // com.mongodb.async.client.MongoIterableImpl this
        start local 1 // com.mongodb.async.SingleResultCallback callback
         0: .line 166
            ldc "callback"
            aload 1 /* callback */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 167
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoIterableImpl.executor:Lcom/mongodb/async/client/OperationExecutor;
            aload 0 /* this */
            invokevirtual com.mongodb.async.client.MongoIterableImpl.asAsyncReadOperation:()Lcom/mongodb/operation/AsyncReadOperation;
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoIterableImpl.readPreference:Lcom/mongodb/ReadPreference;
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoIterableImpl.readConcern:Lcom/mongodb/ReadConcern;
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoIterableImpl.clientSession:Lcom/mongodb/async/client/ClientSession;
            aload 1 /* callback */
            invokeinterface com.mongodb.async.client.OperationExecutor.execute:(Lcom/mongodb/operation/AsyncReadOperation;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;Lcom/mongodb/async/client/ClientSession;Lcom/mongodb/async/SingleResultCallback;)V
         2: .line 168
            return
        end local 1 // com.mongodb.async.SingleResultCallback callback
        end local 0 // com.mongodb.async.client.MongoIterableImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/mongodb/async/client/MongoIterableImpl<TTResult;>;
            0    3     1  callback  Lcom/mongodb/async/SingleResultCallback<Lcom/mongodb/async/AsyncBatchCursor<TTResult;>;>;
    Signature: (Lcom/mongodb/async/SingleResultCallback<Lcom/mongodb/async/AsyncBatchCursor<TTResult;>;>;)V
    MethodParameters:
          Name  Flags
      callback  final

  private void loopCursor(com.mongodb.async.AsyncBatchCursor<TResult>, com.mongodb.Block<? super TResult>, com.mongodb.async.SingleResultCallback<java.lang.Void>);
    descriptor: (Lcom/mongodb/async/AsyncBatchCursor;Lcom/mongodb/Block;Lcom/mongodb/async/SingleResultCallback;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=4, args_size=4
        start local 0 // com.mongodb.async.client.MongoIterableImpl this
        start local 1 // com.mongodb.async.AsyncBatchCursor batchCursor
        start local 2 // com.mongodb.Block block
        start local 3 // com.mongodb.async.SingleResultCallback callback
         0: .line 172
            aload 1 /* batchCursor */
            new com.mongodb.async.client.MongoIterableImpl$4
            dup
            aload 0 /* this */
            aload 1 /* batchCursor */
            aload 3 /* callback */
            aload 2 /* block */
            invokespecial com.mongodb.async.client.MongoIterableImpl$4.<init>:(Lcom/mongodb/async/client/MongoIterableImpl;Lcom/mongodb/async/AsyncBatchCursor;Lcom/mongodb/async/SingleResultCallback;Lcom/mongodb/Block;)V
            invokeinterface com.mongodb.async.AsyncBatchCursor.next:(Lcom/mongodb/async/SingleResultCallback;)V
         1: .line 191
            return
        end local 3 // com.mongodb.async.SingleResultCallback callback
        end local 2 // com.mongodb.Block block
        end local 1 // com.mongodb.async.AsyncBatchCursor batchCursor
        end local 0 // com.mongodb.async.client.MongoIterableImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lcom/mongodb/async/client/MongoIterableImpl<TTResult;>;
            0    2     1  batchCursor  Lcom/mongodb/async/AsyncBatchCursor<TTResult;>;
            0    2     2        block  Lcom/mongodb/Block<-TTResult;>;
            0    2     3     callback  Lcom/mongodb/async/SingleResultCallback<Ljava/lang/Void;>;
    Signature: (Lcom/mongodb/async/AsyncBatchCursor<TTResult;>;Lcom/mongodb/Block<-TTResult;>;Lcom/mongodb/async/SingleResultCallback<Ljava/lang/Void;>;)V
    MethodParameters:
             Name  Flags
      batchCursor  final
      block        final
      callback     final
}
Signature: <TResult:Ljava/lang/Object;>Ljava/lang/Object;Lcom/mongodb/async/client/MongoIterable<TTResult;>;
SourceFile: "MongoIterableImpl.java"
NestMembers:
  com.mongodb.async.client.MongoIterableImpl$1  com.mongodb.async.client.MongoIterableImpl$2  com.mongodb.async.client.MongoIterableImpl$2$1  com.mongodb.async.client.MongoIterableImpl$2$2  com.mongodb.async.client.MongoIterableImpl$3  com.mongodb.async.client.MongoIterableImpl$3$1  com.mongodb.async.client.MongoIterableImpl$4
InnerClasses:
  com.mongodb.async.client.MongoIterableImpl$1
  com.mongodb.async.client.MongoIterableImpl$2
  com.mongodb.async.client.MongoIterableImpl$3
  com.mongodb.async.client.MongoIterableImpl$4