final class com.mongodb.operation.AsyncChangeStreamBatchCursor<T> implements com.mongodb.async.AsyncAggregateResponseBatchCursor<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.mongodb.operation.AsyncChangeStreamBatchCursor
  super_class: java.lang.Object
{
  private final com.mongodb.binding.AsyncReadBinding binding;
    descriptor: Lcom/mongodb/binding/AsyncReadBinding;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.mongodb.operation.ChangeStreamOperation<T> changeStreamOperation;
    descriptor: Lcom/mongodb/operation/ChangeStreamOperation;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/mongodb/operation/ChangeStreamOperation<TT;>;

  private volatile org.bson.BsonDocument resumeToken;
    descriptor: Lorg/bson/BsonDocument;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile com.mongodb.async.AsyncAggregateResponseBatchCursor<org.bson.RawBsonDocument> wrapped;
    descriptor: Lcom/mongodb/async/AsyncAggregateResponseBatchCursor;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Lcom/mongodb/async/AsyncAggregateResponseBatchCursor<Lorg/bson/RawBsonDocument;>;

  private boolean isClosed;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean isOperationInProgress;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean isClosePending;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  void <init>(com.mongodb.operation.ChangeStreamOperation<T>, com.mongodb.async.AsyncAggregateResponseBatchCursor<org.bson.RawBsonDocument>, com.mongodb.binding.AsyncReadBinding, org.bson.BsonDocument);
    descriptor: (Lcom/mongodb/operation/ChangeStreamOperation;Lcom/mongodb/async/AsyncAggregateResponseBatchCursor;Lcom/mongodb/binding/AsyncReadBinding;Lorg/bson/BsonDocument;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
        start local 1 // com.mongodb.operation.ChangeStreamOperation changeStreamOperation
        start local 2 // com.mongodb.async.AsyncAggregateResponseBatchCursor wrapped
        start local 3 // com.mongodb.binding.AsyncReadBinding binding
        start local 4 // org.bson.BsonDocument resumeToken
         0: .line 53
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 48
            aload 0 /* this */
            iconst_0
            putfield com.mongodb.operation.AsyncChangeStreamBatchCursor.isClosed:Z
         2: .line 49
            aload 0 /* this */
            iconst_0
            putfield com.mongodb.operation.AsyncChangeStreamBatchCursor.isOperationInProgress:Z
         3: .line 50
            aload 0 /* this */
            iconst_0
            putfield com.mongodb.operation.AsyncChangeStreamBatchCursor.isClosePending:Z
         4: .line 57
            aload 0 /* this */
            aload 1 /* changeStreamOperation */
            putfield com.mongodb.operation.AsyncChangeStreamBatchCursor.changeStreamOperation:Lcom/mongodb/operation/ChangeStreamOperation;
         5: .line 58
            aload 0 /* this */
            aload 2 /* wrapped */
            putfield com.mongodb.operation.AsyncChangeStreamBatchCursor.wrapped:Lcom/mongodb/async/AsyncAggregateResponseBatchCursor;
         6: .line 59
            aload 0 /* this */
            aload 3 /* binding */
            putfield com.mongodb.operation.AsyncChangeStreamBatchCursor.binding:Lcom/mongodb/binding/AsyncReadBinding;
         7: .line 60
            aload 3 /* binding */
            invokeinterface com.mongodb.binding.AsyncReadBinding.retain:()Lcom/mongodb/binding/AsyncReadBinding;
            pop
         8: .line 61
            aload 0 /* this */
            aload 4 /* resumeToken */
            putfield com.mongodb.operation.AsyncChangeStreamBatchCursor.resumeToken:Lorg/bson/BsonDocument;
         9: .line 62
            return
        end local 4 // org.bson.BsonDocument resumeToken
        end local 3 // com.mongodb.binding.AsyncReadBinding binding
        end local 2 // com.mongodb.async.AsyncAggregateResponseBatchCursor wrapped
        end local 1 // com.mongodb.operation.ChangeStreamOperation changeStreamOperation
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   10     0                   this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;
            0   10     1  changeStreamOperation  Lcom/mongodb/operation/ChangeStreamOperation<TT;>;
            0   10     2                wrapped  Lcom/mongodb/async/AsyncAggregateResponseBatchCursor<Lorg/bson/RawBsonDocument;>;
            0   10     3                binding  Lcom/mongodb/binding/AsyncReadBinding;
            0   10     4            resumeToken  Lorg/bson/BsonDocument;
    Signature: (Lcom/mongodb/operation/ChangeStreamOperation<TT;>;Lcom/mongodb/async/AsyncAggregateResponseBatchCursor<Lorg/bson/RawBsonDocument;>;Lcom/mongodb/binding/AsyncReadBinding;Lorg/bson/BsonDocument;)V
    MethodParameters:
                       Name  Flags
      changeStreamOperation  final
      wrapped                final
      binding                final
      resumeToken            final

  com.mongodb.async.AsyncAggregateResponseBatchCursor<org.bson.RawBsonDocument> getWrapped();
    descriptor: ()Lcom/mongodb/async/AsyncAggregateResponseBatchCursor;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
         0: .line 65
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.wrapped:Lcom/mongodb/async/AsyncAggregateResponseBatchCursor;
            areturn
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;
    Signature: ()Lcom/mongodb/async/AsyncAggregateResponseBatchCursor<Lorg/bson/RawBsonDocument;>;

  public void next(com.mongodb.async.SingleResultCallback<java.util.List<T>>);
    descriptor: (Lcom/mongodb/async/SingleResultCallback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
        start local 1 // com.mongodb.async.SingleResultCallback callback
         0: .line 70
            aload 0 /* this */
            new com.mongodb.operation.AsyncChangeStreamBatchCursor$1
            dup
            aload 0 /* this */
            invokespecial com.mongodb.operation.AsyncChangeStreamBatchCursor$1.<init>:(Lcom/mongodb/operation/AsyncChangeStreamBatchCursor;)V
         1: .line 77
            aload 0 /* this */
            aload 1 /* callback */
            invokevirtual com.mongodb.operation.AsyncChangeStreamBatchCursor.convertResultsCallback:(Lcom/mongodb/async/SingleResultCallback;)Lcom/mongodb/async/SingleResultCallback;
            iconst_0
         2: .line 70
            invokevirtual com.mongodb.operation.AsyncChangeStreamBatchCursor.resumeableOperation:(Lcom/mongodb/operation/AsyncChangeStreamBatchCursor$AsyncBlock;Lcom/mongodb/async/SingleResultCallback;Z)V
         3: .line 78
            return
        end local 1 // com.mongodb.async.SingleResultCallback callback
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;
            0    4     1  callback  Lcom/mongodb/async/SingleResultCallback<Ljava/util/List<TT;>;>;
    Signature: (Lcom/mongodb/async/SingleResultCallback<Ljava/util/List<TT;>;>;)V
    MethodParameters:
          Name  Flags
      callback  final

  public void tryNext(com.mongodb.async.SingleResultCallback<java.util.List<T>>);
    descriptor: (Lcom/mongodb/async/SingleResultCallback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
        start local 1 // com.mongodb.async.SingleResultCallback callback
         0: .line 82
            aload 0 /* this */
            new com.mongodb.operation.AsyncChangeStreamBatchCursor$2
            dup
            aload 0 /* this */
            invokespecial com.mongodb.operation.AsyncChangeStreamBatchCursor$2.<init>:(Lcom/mongodb/operation/AsyncChangeStreamBatchCursor;)V
         1: .line 89
            aload 0 /* this */
            aload 1 /* callback */
            invokevirtual com.mongodb.operation.AsyncChangeStreamBatchCursor.convertResultsCallback:(Lcom/mongodb/async/SingleResultCallback;)Lcom/mongodb/async/SingleResultCallback;
            iconst_1
         2: .line 82
            invokevirtual com.mongodb.operation.AsyncChangeStreamBatchCursor.resumeableOperation:(Lcom/mongodb/operation/AsyncChangeStreamBatchCursor$AsyncBlock;Lcom/mongodb/async/SingleResultCallback;Z)V
         3: .line 90
            return
        end local 1 // com.mongodb.async.SingleResultCallback callback
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;
            0    4     1  callback  Lcom/mongodb/async/SingleResultCallback<Ljava/util/List<TT;>;>;
    Signature: (Lcom/mongodb/async/SingleResultCallback<Ljava/util/List<TT;>;>;)V
    MethodParameters:
          Name  Flags
      callback  final

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
         0: .line 94
            iconst_0
            istore 1 /* closeCursor */
        start local 1 // boolean closeCursor
         1: .line 96
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         2: .line 97
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.isOperationInProgress:Z
            ifeq 5
         3: .line 98
            aload 0 /* this */
            iconst_1
            putfield com.mongodb.operation.AsyncChangeStreamBatchCursor.isClosePending:Z
         4: .line 99
            goto 10
         5: .line 100
      StackMap locals: int com.mongodb.operation.AsyncChangeStreamBatchCursor
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.isClosed:Z
            ifeq 6
            iconst_0
            goto 7
      StackMap locals:
      StackMap stack:
         6: iconst_1
      StackMap locals:
      StackMap stack: int
         7: istore 1 /* closeCursor */
         8: .line 101
            aload 0 /* this */
            iconst_1
            putfield com.mongodb.operation.AsyncChangeStreamBatchCursor.isClosed:Z
         9: .line 102
            aload 0 /* this */
            iconst_0
            putfield com.mongodb.operation.AsyncChangeStreamBatchCursor.isClosePending:Z
        10: .line 96
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        11: goto 14
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: aload 2
            monitorexit
        13: athrow
        14: .line 106
      StackMap locals:
      StackMap stack:
            iload 1 /* closeCursor */
            ifeq 17
        15: .line 107
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.wrapped:Lcom/mongodb/async/AsyncAggregateResponseBatchCursor;
            invokeinterface com.mongodb.async.AsyncAggregateResponseBatchCursor.close:()V
        16: .line 108
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.binding:Lcom/mongodb/binding/AsyncReadBinding;
            invokeinterface com.mongodb.binding.AsyncReadBinding.release:()V
        17: .line 110
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean closeCursor
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   18     0         this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;
            1   18     1  closeCursor  Z
      Exception table:
        from    to  target  type
           2    11      12  any
          12    13      12  any

  public void setBatchSize(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
        start local 1 // int batchSize
         0: .line 114
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.wrapped:Lcom/mongodb/async/AsyncAggregateResponseBatchCursor;
            iload 1 /* batchSize */
            invokeinterface com.mongodb.async.AsyncAggregateResponseBatchCursor.setBatchSize:(I)V
         1: .line 115
            return
        end local 1 // int batchSize
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;
            0    2     1  batchSize  I
    MethodParameters:
           Name  Flags
      batchSize  final

  public int getBatchSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
         0: .line 119
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.wrapped:Lcom/mongodb/async/AsyncAggregateResponseBatchCursor;
            invokeinterface com.mongodb.async.AsyncAggregateResponseBatchCursor.getBatchSize:()I
            ireturn
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;

  public boolean isClosed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
         0: .line 124
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         1: .line 125
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.isClosed:Z
            aload 1
            monitorexit
         2: ireturn
         3: .line 124
      StackMap locals: com.mongodb.operation.AsyncChangeStreamBatchCursor com.mongodb.operation.AsyncChangeStreamBatchCursor
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public org.bson.BsonDocument getPostBatchResumeToken();
    descriptor: ()Lorg/bson/BsonDocument;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
         0: .line 131
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.wrapped:Lcom/mongodb/async/AsyncAggregateResponseBatchCursor;
            invokeinterface com.mongodb.async.AsyncAggregateResponseBatchCursor.getPostBatchResumeToken:()Lorg/bson/BsonDocument;
            areturn
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;

  public org.bson.BsonTimestamp getOperationTime();
    descriptor: ()Lorg/bson/BsonTimestamp;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
         0: .line 136
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.changeStreamOperation:Lcom/mongodb/operation/ChangeStreamOperation;
            invokevirtual com.mongodb.operation.ChangeStreamOperation.getStartAtOperationTime:()Lorg/bson/BsonTimestamp;
            areturn
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;

  public boolean isFirstBatchEmpty();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
         0: .line 141
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.wrapped:Lcom/mongodb/async/AsyncAggregateResponseBatchCursor;
            invokeinterface com.mongodb.async.AsyncAggregateResponseBatchCursor.isFirstBatchEmpty:()Z
            ireturn
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;

  private void cachePostBatchResumeToken(com.mongodb.async.AsyncAggregateResponseBatchCursor<org.bson.RawBsonDocument>);
    descriptor: (Lcom/mongodb/async/AsyncAggregateResponseBatchCursor;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
        start local 1 // com.mongodb.async.AsyncAggregateResponseBatchCursor queryBatchCursor
         0: .line 145
            aload 1 /* queryBatchCursor */
            invokeinterface com.mongodb.async.AsyncAggregateResponseBatchCursor.getPostBatchResumeToken:()Lorg/bson/BsonDocument;
            ifnull 2
         1: .line 146
            aload 0 /* this */
            aload 1 /* queryBatchCursor */
            invokeinterface com.mongodb.async.AsyncAggregateResponseBatchCursor.getPostBatchResumeToken:()Lorg/bson/BsonDocument;
            putfield com.mongodb.operation.AsyncChangeStreamBatchCursor.resumeToken:Lorg/bson/BsonDocument;
         2: .line 148
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.mongodb.async.AsyncAggregateResponseBatchCursor queryBatchCursor
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    3     0              this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;
            0    3     1  queryBatchCursor  Lcom/mongodb/async/AsyncAggregateResponseBatchCursor<Lorg/bson/RawBsonDocument;>;
    Signature: (Lcom/mongodb/async/AsyncAggregateResponseBatchCursor<Lorg/bson/RawBsonDocument;>;)V
    MethodParameters:
                  Name  Flags
      queryBatchCursor  final

  private void endOperationInProgress();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
         0: .line 151
            iconst_0
            istore 1 /* closePending */
        start local 1 // boolean closePending
         1: .line 152
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         2: .line 153
            aload 0 /* this */
            iconst_0
            putfield com.mongodb.operation.AsyncChangeStreamBatchCursor.isOperationInProgress:Z
         3: .line 154
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.isClosePending:Z
            istore 1 /* closePending */
         4: .line 152
            aload 2
            monitorexit
         5: goto 8
      StackMap locals: com.mongodb.operation.AsyncChangeStreamBatchCursor int com.mongodb.operation.AsyncChangeStreamBatchCursor
      StackMap stack: java.lang.Throwable
         6: aload 2
            monitorexit
         7: athrow
         8: .line 156
      StackMap locals:
      StackMap stack:
            iload 1 /* closePending */
            ifeq 10
         9: .line 157
            aload 0 /* this */
            invokevirtual com.mongodb.operation.AsyncChangeStreamBatchCursor.close:()V
        10: .line 159
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean closePending
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   11     0          this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;
            1   11     1  closePending  Z
      Exception table:
        from    to  target  type
           2     5       6  any
           6     7       6  any

  private com.mongodb.async.SingleResultCallback<java.util.List<org.bson.RawBsonDocument>> convertResultsCallback(com.mongodb.async.SingleResultCallback<java.util.List<T>>);
    descriptor: (Lcom/mongodb/async/SingleResultCallback;)Lcom/mongodb/async/SingleResultCallback;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
        start local 1 // com.mongodb.async.SingleResultCallback callback
         0: .line 162
            new com.mongodb.operation.AsyncChangeStreamBatchCursor$3
            dup
            aload 0 /* this */
            aload 1 /* callback */
            invokespecial com.mongodb.operation.AsyncChangeStreamBatchCursor$3.<init>:(Lcom/mongodb/operation/AsyncChangeStreamBatchCursor;Lcom/mongodb/async/SingleResultCallback;)V
         1: .line 189
            getstatic com.mongodb.operation.OperationHelper.LOGGER:Lcom/mongodb/diagnostics/logging/Logger;
         2: .line 162
            invokestatic com.mongodb.internal.async.ErrorHandlingResultCallback.errorHandlingCallback:(Lcom/mongodb/async/SingleResultCallback;Lcom/mongodb/diagnostics/logging/Logger;)Lcom/mongodb/async/SingleResultCallback;
            areturn
        end local 1 // com.mongodb.async.SingleResultCallback callback
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;
            0    3     1  callback  Lcom/mongodb/async/SingleResultCallback<Ljava/util/List<TT;>;>;
    Signature: (Lcom/mongodb/async/SingleResultCallback<Ljava/util/List<TT;>;>;)Lcom/mongodb/async/SingleResultCallback<Ljava/util/List<Lorg/bson/RawBsonDocument;>;>;
    MethodParameters:
          Name  Flags
      callback  final

  private void resumeableOperation(com.mongodb.operation.AsyncChangeStreamBatchCursor$AsyncBlock, com.mongodb.async.SingleResultCallback<java.util.List<org.bson.RawBsonDocument>>, );
    descriptor: (Lcom/mongodb/operation/AsyncChangeStreamBatchCursor$AsyncBlock;Lcom/mongodb/async/SingleResultCallback;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=5, args_size=4
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
        start local 1 // com.mongodb.operation.AsyncChangeStreamBatchCursor$AsyncBlock asyncBlock
        start local 2 // com.mongodb.async.SingleResultCallback callback
        start local 3 // boolean tryNext
         0: .line 198
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         1: .line 199
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.isClosed:Z
            ifeq 10
         2: .line 200
            aload 2 /* callback */
            aconst_null
         3: new com.mongodb.MongoException
            dup
            ldc "%s called after the cursor was closed."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 201
            iload 3 /* tryNext */
            ifeq 5
            ldc "tryNext()"
            goto 6
      StackMap locals: com.mongodb.operation.AsyncChangeStreamBatchCursor com.mongodb.operation.AsyncChangeStreamBatchCursor$AsyncBlock com.mongodb.async.SingleResultCallback int com.mongodb.operation.AsyncChangeStreamBatchCursor
      StackMap stack: com.mongodb.async.SingleResultCallback null new 3 new 3 java.lang.String java.lang.Object[] java.lang.Object[] int
         5: ldc "next()"
      StackMap locals: com.mongodb.operation.AsyncChangeStreamBatchCursor com.mongodb.operation.AsyncChangeStreamBatchCursor$AsyncBlock com.mongodb.async.SingleResultCallback int com.mongodb.operation.AsyncChangeStreamBatchCursor
      StackMap stack: com.mongodb.async.SingleResultCallback null new 3 new 3 java.lang.String java.lang.Object[] java.lang.Object[] int java.lang.String
         6: aastore
         7: .line 200
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial com.mongodb.MongoException.<init>:(Ljava/lang/String;)V
            invokeinterface com.mongodb.async.SingleResultCallback.onResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         8: .line 202
            aload 4
            monitorexit
         9: return
        10: .line 204
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.mongodb.operation.AsyncChangeStreamBatchCursor.isOperationInProgress:Z
        11: .line 198
            aload 4
            monitorexit
        12: goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: aload 4
            monitorexit
        14: athrow
        15: .line 206
      StackMap locals:
      StackMap stack:
            aload 1 /* asyncBlock */
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.wrapped:Lcom/mongodb/async/AsyncAggregateResponseBatchCursor;
            new com.mongodb.operation.AsyncChangeStreamBatchCursor$4
            dup
            aload 0 /* this */
            aload 2 /* callback */
            aload 1 /* asyncBlock */
            iload 3 /* tryNext */
            invokespecial com.mongodb.operation.AsyncChangeStreamBatchCursor$4.<init>:(Lcom/mongodb/operation/AsyncChangeStreamBatchCursor;Lcom/mongodb/async/SingleResultCallback;Lcom/mongodb/operation/AsyncChangeStreamBatchCursor$AsyncBlock;Z)V
            invokeinterface com.mongodb.operation.AsyncChangeStreamBatchCursor$AsyncBlock.apply:(Lcom/mongodb/async/AsyncAggregateResponseBatchCursor;Lcom/mongodb/async/SingleResultCallback;)V
        16: .line 221
            return
        end local 3 // boolean tryNext
        end local 2 // com.mongodb.async.SingleResultCallback callback
        end local 1 // com.mongodb.operation.AsyncChangeStreamBatchCursor$AsyncBlock asyncBlock
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   17     0        this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;
            0   17     1  asyncBlock  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor$AsyncBlock;
            0   17     2    callback  Lcom/mongodb/async/SingleResultCallback<Ljava/util/List<Lorg/bson/RawBsonDocument;>;>;
            0   17     3     tryNext  Z
      Exception table:
        from    to  target  type
           1     9      13  any
          10    12      13  any
          13    14      13  any
    Signature: (Lcom/mongodb/operation/AsyncChangeStreamBatchCursor$AsyncBlock;Lcom/mongodb/async/SingleResultCallback<Ljava/util/List<Lorg/bson/RawBsonDocument;>;>;Z)V
    MethodParameters:
            Name  Flags
      asyncBlock  final
      callback    final
      tryNext     final

  private void retryOperation(com.mongodb.operation.AsyncChangeStreamBatchCursor$AsyncBlock, com.mongodb.async.SingleResultCallback<java.util.List<org.bson.RawBsonDocument>>, );
    descriptor: (Lcom/mongodb/operation/AsyncChangeStreamBatchCursor$AsyncBlock;Lcom/mongodb/async/SingleResultCallback;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=4, args_size=4
        start local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
        start local 1 // com.mongodb.operation.AsyncChangeStreamBatchCursor$AsyncBlock asyncBlock
        start local 2 // com.mongodb.async.SingleResultCallback callback
        start local 3 // boolean tryNext
         0: .line 225
            aload 0 /* this */
            getfield com.mongodb.operation.AsyncChangeStreamBatchCursor.binding:Lcom/mongodb/binding/AsyncReadBinding;
            new com.mongodb.operation.AsyncChangeStreamBatchCursor$5
            dup
            aload 0 /* this */
            aload 2 /* callback */
            aload 1 /* asyncBlock */
            iload 3 /* tryNext */
            invokespecial com.mongodb.operation.AsyncChangeStreamBatchCursor$5.<init>:(Lcom/mongodb/operation/AsyncChangeStreamBatchCursor;Lcom/mongodb/async/SingleResultCallback;Lcom/mongodb/operation/AsyncChangeStreamBatchCursor$AsyncBlock;Z)V
            invokestatic com.mongodb.operation.OperationHelper.withAsyncReadConnection:(Lcom/mongodb/binding/AsyncReadBinding;Lcom/mongodb/operation/OperationHelper$AsyncCallableWithSource;)V
         1: .line 248
            return
        end local 3 // boolean tryNext
        end local 2 // com.mongodb.async.SingleResultCallback callback
        end local 1 // com.mongodb.operation.AsyncChangeStreamBatchCursor$AsyncBlock asyncBlock
        end local 0 // com.mongodb.operation.AsyncChangeStreamBatchCursor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor<TT;>;
            0    2     1  asyncBlock  Lcom/mongodb/operation/AsyncChangeStreamBatchCursor$AsyncBlock;
            0    2     2    callback  Lcom/mongodb/async/SingleResultCallback<Ljava/util/List<Lorg/bson/RawBsonDocument;>;>;
            0    2     3     tryNext  Z
    Signature: (Lcom/mongodb/operation/AsyncChangeStreamBatchCursor$AsyncBlock;Lcom/mongodb/async/SingleResultCallback<Ljava/util/List<Lorg/bson/RawBsonDocument;>;>;Z)V
    MethodParameters:
            Name  Flags
      asyncBlock  final
      callback    final
      tryNext     final
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Lcom/mongodb/async/AsyncAggregateResponseBatchCursor<TT;>;
SourceFile: "AsyncChangeStreamBatchCursor.java"
NestMembers:
  com.mongodb.operation.AsyncChangeStreamBatchCursor$1  com.mongodb.operation.AsyncChangeStreamBatchCursor$2  com.mongodb.operation.AsyncChangeStreamBatchCursor$3  com.mongodb.operation.AsyncChangeStreamBatchCursor$4  com.mongodb.operation.AsyncChangeStreamBatchCursor$5  com.mongodb.operation.AsyncChangeStreamBatchCursor$5$1  com.mongodb.operation.AsyncChangeStreamBatchCursor$AsyncBlock
InnerClasses:
  com.mongodb.operation.AsyncChangeStreamBatchCursor$1
  com.mongodb.operation.AsyncChangeStreamBatchCursor$2
  com.mongodb.operation.AsyncChangeStreamBatchCursor$3
  com.mongodb.operation.AsyncChangeStreamBatchCursor$4
  com.mongodb.operation.AsyncChangeStreamBatchCursor$5
  private abstract AsyncBlock = com.mongodb.operation.AsyncChangeStreamBatchCursor$AsyncBlock of com.mongodb.operation.AsyncChangeStreamBatchCursor
  abstract AsyncCallableWithSource = com.mongodb.operation.OperationHelper$AsyncCallableWithSource of com.mongodb.operation.OperationHelper