public class com.mongodb.operation.GroupOperation<T> implements com.mongodb.operation.AsyncReadOperation<com.mongodb.async.AsyncBatchCursor<T>>, com.mongodb.operation.ReadOperation<com.mongodb.operation.BatchCursor<T>>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.mongodb.operation.GroupOperation
  super_class: java.lang.Object
{
  private final com.mongodb.MongoNamespace namespace;
    descriptor: Lcom/mongodb/MongoNamespace;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.bson.codecs.Decoder<T> decoder;
    descriptor: Lorg/bson/codecs/Decoder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/bson/codecs/Decoder<TT;>;

  private final org.bson.BsonJavaScript reduceFunction;
    descriptor: Lorg/bson/BsonJavaScript;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.bson.BsonDocument initial;
    descriptor: Lorg/bson/BsonDocument;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private org.bson.BsonDocument key;
    descriptor: Lorg/bson/BsonDocument;
    flags: (0x0002) ACC_PRIVATE

  private org.bson.BsonJavaScript keyFunction;
    descriptor: Lorg/bson/BsonJavaScript;
    flags: (0x0002) ACC_PRIVATE

  private org.bson.BsonDocument filter;
    descriptor: Lorg/bson/BsonDocument;
    flags: (0x0002) ACC_PRIVATE

  private org.bson.BsonJavaScript finalizeFunction;
    descriptor: Lorg/bson/BsonJavaScript;
    flags: (0x0002) ACC_PRIVATE

  private com.mongodb.client.model.Collation collation;
    descriptor: Lcom/mongodb/client/model/Collation;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(com.mongodb.MongoNamespace, org.bson.BsonJavaScript, org.bson.BsonDocument, org.bson.codecs.Decoder<T>);
    descriptor: (Lcom/mongodb/MongoNamespace;Lorg/bson/BsonJavaScript;Lorg/bson/BsonDocument;Lorg/bson/codecs/Decoder;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // com.mongodb.operation.GroupOperation this
        start local 1 // com.mongodb.MongoNamespace namespace
        start local 2 // org.bson.BsonJavaScript reduceFunction
        start local 3 // org.bson.BsonDocument initial
        start local 4 // org.bson.codecs.Decoder decoder
         0: .line 77
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 79
            aload 0 /* this */
            ldc "namespace"
            aload 1 /* namespace */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.mongodb.MongoNamespace
            putfield com.mongodb.operation.GroupOperation.namespace:Lcom/mongodb/MongoNamespace;
         2: .line 80
            aload 0 /* this */
            ldc "reduceFunction"
            aload 2 /* reduceFunction */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.bson.BsonJavaScript
            putfield com.mongodb.operation.GroupOperation.reduceFunction:Lorg/bson/BsonJavaScript;
         3: .line 81
            aload 0 /* this */
            ldc "initial"
            aload 3 /* initial */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.bson.BsonDocument
            putfield com.mongodb.operation.GroupOperation.initial:Lorg/bson/BsonDocument;
         4: .line 82
            aload 0 /* this */
            ldc "decoder"
            aload 4 /* decoder */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.bson.codecs.Decoder
            putfield com.mongodb.operation.GroupOperation.decoder:Lorg/bson/codecs/Decoder;
         5: .line 83
            return
        end local 4 // org.bson.codecs.Decoder decoder
        end local 3 // org.bson.BsonDocument initial
        end local 2 // org.bson.BsonJavaScript reduceFunction
        end local 1 // com.mongodb.MongoNamespace namespace
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    6     0            this  Lcom/mongodb/operation/GroupOperation<TT;>;
            0    6     1       namespace  Lcom/mongodb/MongoNamespace;
            0    6     2  reduceFunction  Lorg/bson/BsonJavaScript;
            0    6     3         initial  Lorg/bson/BsonDocument;
            0    6     4         decoder  Lorg/bson/codecs/Decoder<TT;>;
    Signature: (Lcom/mongodb/MongoNamespace;Lorg/bson/BsonJavaScript;Lorg/bson/BsonDocument;Lorg/bson/codecs/Decoder<TT;>;)V
    MethodParameters:
                Name  Flags
      namespace       final
      reduceFunction  final
      initial         final
      decoder         final

  public com.mongodb.MongoNamespace getNamespace();
    descriptor: ()Lcom/mongodb/MongoNamespace;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.operation.GroupOperation this
         0: .line 92
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.namespace:Lcom/mongodb/MongoNamespace;
            areturn
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/GroupOperation<TT;>;

  public org.bson.codecs.Decoder<T> getDecoder();
    descriptor: ()Lorg/bson/codecs/Decoder;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.operation.GroupOperation this
         0: .line 103
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.decoder:Lorg/bson/codecs/Decoder;
            areturn
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/GroupOperation<TT;>;
    Signature: ()Lorg/bson/codecs/Decoder<TT;>;

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

  public com.mongodb.operation.GroupOperation<T> key(org.bson.BsonDocument);
    descriptor: (Lorg/bson/BsonDocument;)Lcom/mongodb/operation/GroupOperation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.operation.GroupOperation this
        start local 1 // org.bson.BsonDocument key
         0: .line 122
            aload 0 /* this */
            aload 1 /* key */
            putfield com.mongodb.operation.GroupOperation.key:Lorg/bson/BsonDocument;
         1: .line 123
            aload 0 /* this */
            areturn
        end local 1 // org.bson.BsonDocument key
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/operation/GroupOperation<TT;>;
            0    2     1   key  Lorg/bson/BsonDocument;
    Signature: (Lorg/bson/BsonDocument;)Lcom/mongodb/operation/GroupOperation<TT;>;
    MethodParameters:
      Name  Flags
      key   final

  public org.bson.BsonJavaScript getKeyFunction();
    descriptor: ()Lorg/bson/BsonJavaScript;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.operation.GroupOperation this
         0: .line 132
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.keyFunction:Lorg/bson/BsonJavaScript;
            areturn
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/GroupOperation<TT;>;

  public com.mongodb.operation.GroupOperation<T> keyFunction(org.bson.BsonJavaScript);
    descriptor: (Lorg/bson/BsonJavaScript;)Lcom/mongodb/operation/GroupOperation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.operation.GroupOperation this
        start local 1 // org.bson.BsonJavaScript keyFunction
         0: .line 142
            aload 0 /* this */
            aload 1 /* keyFunction */
            putfield com.mongodb.operation.GroupOperation.keyFunction:Lorg/bson/BsonJavaScript;
         1: .line 143
            aload 0 /* this */
            areturn
        end local 1 // org.bson.BsonJavaScript keyFunction
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lcom/mongodb/operation/GroupOperation<TT;>;
            0    2     1  keyFunction  Lorg/bson/BsonJavaScript;
    Signature: (Lorg/bson/BsonJavaScript;)Lcom/mongodb/operation/GroupOperation<TT;>;
    MethodParameters:
             Name  Flags
      keyFunction  final

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

  public org.bson.BsonJavaScript getReduceFunction();
    descriptor: ()Lorg/bson/BsonJavaScript;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.operation.GroupOperation this
         0: .line 161
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.reduceFunction:Lorg/bson/BsonJavaScript;
            areturn
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/GroupOperation<TT;>;

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

  public com.mongodb.operation.GroupOperation<T> filter(org.bson.BsonDocument);
    descriptor: (Lorg/bson/BsonDocument;)Lcom/mongodb/operation/GroupOperation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.operation.GroupOperation this
        start local 1 // org.bson.BsonDocument filter
         0: .line 180
            aload 0 /* this */
            aload 1 /* filter */
            putfield com.mongodb.operation.GroupOperation.filter:Lorg/bson/BsonDocument;
         1: .line 181
            aload 0 /* this */
            areturn
        end local 1 // org.bson.BsonDocument filter
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/mongodb/operation/GroupOperation<TT;>;
            0    2     1  filter  Lorg/bson/BsonDocument;
    Signature: (Lorg/bson/BsonDocument;)Lcom/mongodb/operation/GroupOperation<TT;>;
    MethodParameters:
        Name  Flags
      filter  final

  public org.bson.BsonJavaScript getFinalizeFunction();
    descriptor: ()Lorg/bson/BsonJavaScript;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.operation.GroupOperation this
         0: .line 190
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.finalizeFunction:Lorg/bson/BsonJavaScript;
            areturn
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/GroupOperation<TT;>;

  public com.mongodb.operation.GroupOperation<T> finalizeFunction(org.bson.BsonJavaScript);
    descriptor: (Lorg/bson/BsonJavaScript;)Lcom/mongodb/operation/GroupOperation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.operation.GroupOperation this
        start local 1 // org.bson.BsonJavaScript finalizeFunction
         0: .line 200
            aload 0 /* this */
            aload 1 /* finalizeFunction */
            putfield com.mongodb.operation.GroupOperation.finalizeFunction:Lorg/bson/BsonJavaScript;
         1: .line 201
            aload 0 /* this */
            areturn
        end local 1 // org.bson.BsonJavaScript finalizeFunction
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0              this  Lcom/mongodb/operation/GroupOperation<TT;>;
            0    2     1  finalizeFunction  Lorg/bson/BsonJavaScript;
    Signature: (Lorg/bson/BsonJavaScript;)Lcom/mongodb/operation/GroupOperation<TT;>;
    MethodParameters:
                  Name  Flags
      finalizeFunction  final

  public com.mongodb.client.model.Collation getCollation();
    descriptor: ()Lcom/mongodb/client/model/Collation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.operation.GroupOperation this
         0: .line 212
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.collation:Lcom/mongodb/client/model/Collation;
            areturn
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/GroupOperation<TT;>;

  public com.mongodb.operation.GroupOperation<T> collation(com.mongodb.client.model.Collation);
    descriptor: (Lcom/mongodb/client/model/Collation;)Lcom/mongodb/operation/GroupOperation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.operation.GroupOperation this
        start local 1 // com.mongodb.client.model.Collation collation
         0: .line 225
            aload 0 /* this */
            aload 1 /* collation */
            putfield com.mongodb.operation.GroupOperation.collation:Lcom/mongodb/client/model/Collation;
         1: .line 226
            aload 0 /* this */
            areturn
        end local 1 // com.mongodb.client.model.Collation collation
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/mongodb/operation/GroupOperation<TT;>;
            0    2     1  collation  Lcom/mongodb/client/model/Collation;
    Signature: (Lcom/mongodb/client/model/Collation;)Lcom/mongodb/operation/GroupOperation<TT;>;
    MethodParameters:
           Name  Flags
      collation  final

  public com.mongodb.operation.GroupOperation<T> retryReads(boolean);
    descriptor: (Z)Lcom/mongodb/operation/GroupOperation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.operation.GroupOperation this
        start local 1 // boolean retryReads
         0: .line 237
            aload 0 /* this */
            iload 1 /* retryReads */
            putfield com.mongodb.operation.GroupOperation.retryReads:Z
         1: .line 238
            aload 0 /* this */
            areturn
        end local 1 // boolean retryReads
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/mongodb/operation/GroupOperation<TT;>;
            0    2     1  retryReads  Z
    Signature: (Z)Lcom/mongodb/operation/GroupOperation<TT;>;
    MethodParameters:
            Name  Flags
      retryReads  final

  public boolean getRetryReads();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.operation.GroupOperation this
         0: .line 248
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.retryReads:Z
            ireturn
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/GroupOperation<TT;>;

  public com.mongodb.operation.BatchCursor<T> execute(com.mongodb.binding.ReadBinding);
    descriptor: (Lcom/mongodb/binding/ReadBinding;)Lcom/mongodb/operation/BatchCursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // com.mongodb.operation.GroupOperation this
        start local 1 // com.mongodb.binding.ReadBinding binding
         0: .line 259
            aload 1 /* binding */
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.namespace:Lcom/mongodb/MongoNamespace;
            invokevirtual com.mongodb.MongoNamespace.getDatabaseName:()Ljava/lang/String;
            aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.getCommandCreator:()Lcom/mongodb/operation/CommandOperationHelper$CommandCreator;
         1: .line 260
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.decoder:Lorg/bson/codecs/Decoder;
            ldc "retval"
            invokestatic com.mongodb.operation.CommandResultDocumentCodec.create:(Lorg/bson/codecs/Decoder;Ljava/lang/String;)Lorg/bson/codecs/Codec;
         2: .line 261
            aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.transformer:()Lcom/mongodb/operation/CommandOperationHelper$CommandReadTransformer;
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.retryReads:Z
         3: .line 259
            invokestatic com.mongodb.operation.CommandOperationHelper.executeCommand:(Lcom/mongodb/binding/ReadBinding;Ljava/lang/String;Lcom/mongodb/operation/CommandOperationHelper$CommandCreator;Lorg/bson/codecs/Decoder;Lcom/mongodb/operation/CommandOperationHelper$CommandReadTransformer;Z)Ljava/lang/Object;
            checkcast com.mongodb.operation.BatchCursor
            areturn
        end local 1 // com.mongodb.binding.ReadBinding binding
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lcom/mongodb/operation/GroupOperation<TT;>;
            0    4     1  binding  Lcom/mongodb/binding/ReadBinding;
    Signature: (Lcom/mongodb/binding/ReadBinding;)Lcom/mongodb/operation/BatchCursor<TT;>;
    MethodParameters:
         Name  Flags
      binding  final

  public void executeAsync(com.mongodb.binding.AsyncReadBinding, com.mongodb.async.SingleResultCallback<com.mongodb.async.AsyncBatchCursor<T>>);
    descriptor: (Lcom/mongodb/binding/AsyncReadBinding;Lcom/mongodb/async/SingleResultCallback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=3, args_size=3
        start local 0 // com.mongodb.operation.GroupOperation this
        start local 1 // com.mongodb.binding.AsyncReadBinding binding
        start local 2 // com.mongodb.async.SingleResultCallback callback
         0: .line 266
            aload 1 /* binding */
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.namespace:Lcom/mongodb/MongoNamespace;
            invokevirtual com.mongodb.MongoNamespace.getDatabaseName:()Ljava/lang/String;
            aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.getCommandCreator:()Lcom/mongodb/operation/CommandOperationHelper$CommandCreator;
         1: .line 267
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.decoder:Lorg/bson/codecs/Decoder;
            ldc "retval"
            invokestatic com.mongodb.operation.CommandResultDocumentCodec.create:(Lorg/bson/codecs/Decoder;Ljava/lang/String;)Lorg/bson/codecs/Codec;
            aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.asyncTransformer:()Lcom/mongodb/operation/CommandOperationHelper$CommandReadTransformerAsync;
         2: .line 268
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.retryReads:Z
            aload 2 /* callback */
            getstatic com.mongodb.operation.OperationHelper.LOGGER:Lcom/mongodb/diagnostics/logging/Logger;
            invokestatic com.mongodb.internal.async.ErrorHandlingResultCallback.errorHandlingCallback:(Lcom/mongodb/async/SingleResultCallback;Lcom/mongodb/diagnostics/logging/Logger;)Lcom/mongodb/async/SingleResultCallback;
         3: .line 266
            invokestatic com.mongodb.operation.CommandOperationHelper.executeCommandAsync:(Lcom/mongodb/binding/AsyncReadBinding;Ljava/lang/String;Lcom/mongodb/operation/CommandOperationHelper$CommandCreator;Lorg/bson/codecs/Decoder;Lcom/mongodb/operation/CommandOperationHelper$CommandReadTransformerAsync;ZLcom/mongodb/async/SingleResultCallback;)V
         4: .line 269
            return
        end local 2 // com.mongodb.async.SingleResultCallback callback
        end local 1 // com.mongodb.binding.AsyncReadBinding binding
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lcom/mongodb/operation/GroupOperation<TT;>;
            0    5     1   binding  Lcom/mongodb/binding/AsyncReadBinding;
            0    5     2  callback  Lcom/mongodb/async/SingleResultCallback<Lcom/mongodb/async/AsyncBatchCursor<TT;>;>;
    Signature: (Lcom/mongodb/binding/AsyncReadBinding;Lcom/mongodb/async/SingleResultCallback<Lcom/mongodb/async/AsyncBatchCursor<TT;>;>;)V
    MethodParameters:
          Name  Flags
      binding   final
      callback  final

  private com.mongodb.operation.CommandOperationHelper$CommandCreator getCommandCreator();
    descriptor: ()Lcom/mongodb/operation/CommandOperationHelper$CommandCreator;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.mongodb.operation.GroupOperation this
         0: .line 272
            new com.mongodb.operation.GroupOperation$1
            dup
            aload 0 /* this */
            invokespecial com.mongodb.operation.GroupOperation$1.<init>:(Lcom/mongodb/operation/GroupOperation;)V
            areturn
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/GroupOperation<TT;>;

  private org.bson.BsonDocument getCommand();
    descriptor: ()Lorg/bson/BsonDocument;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // com.mongodb.operation.GroupOperation this
         0: .line 282
            new org.bson.BsonDocument
            dup
            ldc "ns"
            new org.bson.BsonString
            dup
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.namespace:Lcom/mongodb/MongoNamespace;
            invokevirtual com.mongodb.MongoNamespace.getCollectionName:()Ljava/lang/String;
            invokespecial org.bson.BsonString.<init>:(Ljava/lang/String;)V
            invokespecial org.bson.BsonDocument.<init>:(Ljava/lang/String;Lorg/bson/BsonValue;)V
            astore 1 /* commandDocument */
        start local 1 // org.bson.BsonDocument commandDocument
         1: .line 284
            aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.getKey:()Lorg/bson/BsonDocument;
            ifnull 4
         2: .line 285
            aload 1 /* commandDocument */
            ldc "key"
            aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.getKey:()Lorg/bson/BsonDocument;
            invokevirtual org.bson.BsonDocument.put:(Ljava/lang/String;Lorg/bson/BsonValue;)Lorg/bson/BsonValue;
            pop
         3: .line 286
            goto 6
      StackMap locals: org.bson.BsonDocument
      StackMap stack:
         4: aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.getKeyFunction:()Lorg/bson/BsonJavaScript;
            ifnull 6
         5: .line 287
            aload 1 /* commandDocument */
            ldc "$keyf"
            aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.getKeyFunction:()Lorg/bson/BsonJavaScript;
            invokevirtual org.bson.BsonDocument.put:(Ljava/lang/String;Lorg/bson/BsonValue;)Lorg/bson/BsonValue;
            pop
         6: .line 290
      StackMap locals:
      StackMap stack:
            aload 1 /* commandDocument */
            ldc "initial"
            aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.getInitial:()Lorg/bson/BsonDocument;
            invokevirtual org.bson.BsonDocument.put:(Ljava/lang/String;Lorg/bson/BsonValue;)Lorg/bson/BsonValue;
            pop
         7: .line 291
            aload 1 /* commandDocument */
            ldc "$reduce"
            aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.getReduceFunction:()Lorg/bson/BsonJavaScript;
            invokevirtual org.bson.BsonDocument.put:(Ljava/lang/String;Lorg/bson/BsonValue;)Lorg/bson/BsonValue;
            pop
         8: .line 293
            aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.getFinalizeFunction:()Lorg/bson/BsonJavaScript;
            ifnull 10
         9: .line 294
            aload 1 /* commandDocument */
            ldc "finalize"
            aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.getFinalizeFunction:()Lorg/bson/BsonJavaScript;
            invokevirtual org.bson.BsonDocument.put:(Ljava/lang/String;Lorg/bson/BsonValue;)Lorg/bson/BsonValue;
            pop
        10: .line 296
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.getFilter:()Lorg/bson/BsonDocument;
            ifnull 12
        11: .line 297
            aload 1 /* commandDocument */
            ldc "cond"
            aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.getFilter:()Lorg/bson/BsonDocument;
            invokevirtual org.bson.BsonDocument.put:(Ljava/lang/String;Lorg/bson/BsonValue;)Lorg/bson/BsonValue;
            pop
        12: .line 299
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.mongodb.operation.GroupOperation.getCollation:()Lcom/mongodb/client/model/Collation;
            ifnull 14
        13: .line 300
            aload 1 /* commandDocument */
            ldc "collation"
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.collation:Lcom/mongodb/client/model/Collation;
            invokevirtual com.mongodb.client.model.Collation.asDocument:()Lorg/bson/BsonDocument;
            invokevirtual org.bson.BsonDocument.put:(Ljava/lang/String;Lorg/bson/BsonValue;)Lorg/bson/BsonValue;
            pop
        14: .line 302
      StackMap locals:
      StackMap stack:
            new org.bson.BsonDocument
            dup
            ldc "group"
            aload 1 /* commandDocument */
            invokespecial org.bson.BsonDocument.<init>:(Ljava/lang/String;Lorg/bson/BsonValue;)V
            areturn
        end local 1 // org.bson.BsonDocument commandDocument
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   15     0             this  Lcom/mongodb/operation/GroupOperation<TT;>;
            1   15     1  commandDocument  Lorg/bson/BsonDocument;

  private com.mongodb.operation.CommandOperationHelper$CommandReadTransformer<org.bson.BsonDocument, com.mongodb.operation.BatchCursor<T>> transformer();
    descriptor: ()Lcom/mongodb/operation/CommandOperationHelper$CommandReadTransformer;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.mongodb.operation.GroupOperation this
         0: .line 306
            new com.mongodb.operation.GroupOperation$2
            dup
            aload 0 /* this */
            invokespecial com.mongodb.operation.GroupOperation$2.<init>:(Lcom/mongodb/operation/GroupOperation;)V
            areturn
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/GroupOperation<TT;>;
    Signature: ()Lcom/mongodb/operation/CommandOperationHelper$CommandReadTransformer<Lorg/bson/BsonDocument;Lcom/mongodb/operation/BatchCursor<TT;>;>;

  private com.mongodb.operation.CommandOperationHelper$CommandReadTransformerAsync<org.bson.BsonDocument, com.mongodb.async.AsyncBatchCursor<T>> asyncTransformer();
    descriptor: ()Lcom/mongodb/operation/CommandOperationHelper$CommandReadTransformerAsync;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.mongodb.operation.GroupOperation this
         0: .line 316
            new com.mongodb.operation.GroupOperation$3
            dup
            aload 0 /* this */
            invokespecial com.mongodb.operation.GroupOperation$3.<init>:(Lcom/mongodb/operation/GroupOperation;)V
            areturn
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/operation/GroupOperation<TT;>;
    Signature: ()Lcom/mongodb/operation/CommandOperationHelper$CommandReadTransformerAsync<Lorg/bson/BsonDocument;Lcom/mongodb/async/AsyncBatchCursor<TT;>;>;

  private com.mongodb.connection.QueryResult<T> createQueryResult(org.bson.BsonDocument, com.mongodb.connection.ConnectionDescription);
    descriptor: (Lorg/bson/BsonDocument;Lcom/mongodb/connection/ConnectionDescription;)Lcom/mongodb/connection/QueryResult;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // com.mongodb.operation.GroupOperation this
        start local 1 // org.bson.BsonDocument result
        start local 2 // com.mongodb.connection.ConnectionDescription description
         0: .line 327
            new com.mongodb.connection.QueryResult
            dup
            aload 0 /* this */
            getfield com.mongodb.operation.GroupOperation.namespace:Lcom/mongodb/MongoNamespace;
            aload 1 /* result */
            ldc "retval"
            invokestatic com.mongodb.operation.BsonDocumentWrapperHelper.toList:(Lorg/bson/BsonDocument;Ljava/lang/String;)Ljava/util/List;
            lconst_0
         1: .line 328
            aload 2 /* description */
            invokevirtual com.mongodb.connection.ConnectionDescription.getServerAddress:()Lcom/mongodb/ServerAddress;
         2: .line 327
            invokespecial com.mongodb.connection.QueryResult.<init>:(Lcom/mongodb/MongoNamespace;Ljava/util/List;JLcom/mongodb/ServerAddress;)V
            areturn
        end local 2 // com.mongodb.connection.ConnectionDescription description
        end local 1 // org.bson.BsonDocument result
        end local 0 // com.mongodb.operation.GroupOperation this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lcom/mongodb/operation/GroupOperation<TT;>;
            0    3     1       result  Lorg/bson/BsonDocument;
            0    3     2  description  Lcom/mongodb/connection/ConnectionDescription;
    Signature: (Lorg/bson/BsonDocument;Lcom/mongodb/connection/ConnectionDescription;)Lcom/mongodb/connection/QueryResult<TT;>;
    MethodParameters:
             Name  Flags
      result       final
      description  final

  public java.lang.Object execute(com.mongodb.binding.ReadBinding);
    descriptor: (Lcom/mongodb/binding/ReadBinding;)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.GroupOperation.execute:(Lcom/mongodb/binding/ReadBinding;)Lcom/mongodb/operation/BatchCursor;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Lcom/mongodb/operation/AsyncReadOperation<Lcom/mongodb/async/AsyncBatchCursor<TT;>;>;Lcom/mongodb/operation/ReadOperation<Lcom/mongodb/operation/BatchCursor<TT;>;>;
SourceFile: "GroupOperation.java"
NestMembers:
  com.mongodb.operation.GroupOperation$1  com.mongodb.operation.GroupOperation$2  com.mongodb.operation.GroupOperation$3
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
  abstract CommandReadTransformerAsync = com.mongodb.operation.CommandOperationHelper$CommandReadTransformerAsync of com.mongodb.operation.CommandOperationHelper
  com.mongodb.operation.GroupOperation$1
  com.mongodb.operation.GroupOperation$2
  com.mongodb.operation.GroupOperation$3
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()