final class com.mongodb.operation.FindAndModifyHelper
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.mongodb.operation.FindAndModifyHelper
  super_class: java.lang.Object
{
  static <T> com.mongodb.operation.CommandOperationHelper$CommandWriteTransformer<org.bson.BsonDocument, T> transformer();
    descriptor: ()Lcom/mongodb/operation/CommandOperationHelper$CommandWriteTransformer;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 36
            new com.mongodb.operation.FindAndModifyHelper$1
            dup
            invokespecial com.mongodb.operation.FindAndModifyHelper$1.<init>:()V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: <T:Ljava/lang/Object;>()Lcom/mongodb/operation/CommandOperationHelper$CommandWriteTransformer<Lorg/bson/BsonDocument;TT;>;

  static <T> com.mongodb.operation.CommandOperationHelper$CommandWriteTransformerAsync<org.bson.BsonDocument, T> asyncTransformer();
    descriptor: ()Lcom/mongodb/operation/CommandOperationHelper$CommandWriteTransformerAsync;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 46
            new com.mongodb.operation.FindAndModifyHelper$2
            dup
            invokespecial com.mongodb.operation.FindAndModifyHelper$2.<init>:()V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: <T:Ljava/lang/Object;>()Lcom/mongodb/operation/CommandOperationHelper$CommandWriteTransformerAsync<Lorg/bson/BsonDocument;TT;>;

  private static <T> T transformDocument(org.bson.BsonDocument, com.mongodb.ServerAddress);
    descriptor: (Lorg/bson/BsonDocument;Lcom/mongodb/ServerAddress;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // org.bson.BsonDocument result
        start local 1 // com.mongodb.ServerAddress serverAddress
         0: .line 56
            aload 0 /* result */
            invokestatic com.mongodb.internal.operation.WriteConcernHelper.hasWriteConcernError:(Lorg/bson/BsonDocument;)Z
            ifeq 4
         1: .line 57
            new com.mongodb.MongoWriteConcernException
            dup
            aload 0 /* result */
            ldc "writeConcernError"
            invokevirtual org.bson.BsonDocument.getDocument:(Ljava/lang/Object;)Lorg/bson/BsonDocument;
            invokestatic com.mongodb.internal.operation.WriteConcernHelper.createWriteConcernError:(Lorg/bson/BsonDocument;)Lcom/mongodb/bulk/WriteConcernError;
         2: .line 58
            aload 0 /* result */
            ldc "lastErrorObject"
            new org.bson.BsonDocument
            dup
            invokespecial org.bson.BsonDocument.<init>:()V
            invokevirtual org.bson.BsonDocument.getDocument:(Ljava/lang/Object;Lorg/bson/BsonDocument;)Lorg/bson/BsonDocument;
            invokestatic com.mongodb.operation.FindAndModifyHelper.createWriteConcernResult:(Lorg/bson/BsonDocument;)Lcom/mongodb/WriteConcernResult;
            aload 1 /* serverAddress */
         3: .line 57
            invokespecial com.mongodb.MongoWriteConcernException.<init>:(Lcom/mongodb/bulk/WriteConcernError;Lcom/mongodb/WriteConcernResult;Lcom/mongodb/ServerAddress;)V
            athrow
         4: .line 61
      StackMap locals:
      StackMap stack:
            aload 0 /* result */
            ldc "value"
            invokevirtual org.bson.BsonDocument.isDocument:(Ljava/lang/Object;)Z
            ifne 6
         5: .line 62
            aconst_null
            areturn
         6: .line 64
      StackMap locals:
      StackMap stack:
            aload 0 /* result */
            ldc "value"
            aconst_null
            invokevirtual org.bson.BsonDocument.getDocument:(Ljava/lang/Object;Lorg/bson/BsonDocument;)Lorg/bson/BsonDocument;
            invokestatic com.mongodb.operation.BsonDocumentWrapperHelper.toDocument:(Lorg/bson/BsonDocument;)Ljava/lang/Object;
            areturn
        end local 1 // com.mongodb.ServerAddress serverAddress
        end local 0 // org.bson.BsonDocument result
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0         result  Lorg/bson/BsonDocument;
            0    7     1  serverAddress  Lcom/mongodb/ServerAddress;
    Signature: <T:Ljava/lang/Object;>(Lorg/bson/BsonDocument;Lcom/mongodb/ServerAddress;)TT;
    MethodParameters:
               Name  Flags
      result         final
      serverAddress  final

  private static com.mongodb.WriteConcernResult createWriteConcernResult(org.bson.BsonDocument);
    descriptor: (Lorg/bson/BsonDocument;)Lcom/mongodb/WriteConcernResult;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.bson.BsonDocument result
         0: .line 68
            aload 0 /* result */
            ldc "updatedExisting"
            getstatic org.bson.BsonBoolean.FALSE:Lorg/bson/BsonBoolean;
            invokevirtual org.bson.BsonDocument.getBoolean:(Ljava/lang/Object;Lorg/bson/BsonBoolean;)Lorg/bson/BsonBoolean;
            astore 1 /* updatedExisting */
        start local 1 // org.bson.BsonBoolean updatedExisting
         1: .line 70
            aload 0 /* result */
            ldc "n"
            new org.bson.BsonInt32
            dup
            iconst_0
            invokespecial org.bson.BsonInt32.<init>:(I)V
            invokevirtual org.bson.BsonDocument.getNumber:(Ljava/lang/Object;Lorg/bson/BsonNumber;)Lorg/bson/BsonNumber;
            invokevirtual org.bson.BsonNumber.intValue:()I
         2: .line 71
            aload 1 /* updatedExisting */
            invokevirtual org.bson.BsonBoolean.getValue:()Z
            aload 0 /* result */
            ldc "upserted"
            invokevirtual org.bson.BsonDocument.get:(Ljava/lang/Object;)Lorg/bson/BsonValue;
         3: .line 70
            invokestatic com.mongodb.WriteConcernResult.acknowledged:(IZLorg/bson/BsonValue;)Lcom/mongodb/WriteConcernResult;
            areturn
        end local 1 // org.bson.BsonBoolean updatedExisting
        end local 0 // org.bson.BsonDocument result
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0           result  Lorg/bson/BsonDocument;
            1    4     1  updatedExisting  Lorg/bson/BsonBoolean;
    MethodParameters:
        Name  Flags
      result  final

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.operation.FindAndModifyHelper this
         0: .line 74
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 75
            return
        end local 0 // com.mongodb.operation.FindAndModifyHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/operation/FindAndModifyHelper;
}
SourceFile: "FindAndModifyHelper.java"
NestMembers:
  com.mongodb.operation.FindAndModifyHelper$1  com.mongodb.operation.FindAndModifyHelper$2
InnerClasses:
  abstract CommandWriteTransformer = com.mongodb.operation.CommandOperationHelper$CommandWriteTransformer of com.mongodb.operation.CommandOperationHelper
  abstract CommandWriteTransformerAsync = com.mongodb.operation.CommandOperationHelper$CommandWriteTransformerAsync of com.mongodb.operation.CommandOperationHelper
  com.mongodb.operation.FindAndModifyHelper$1
  com.mongodb.operation.FindAndModifyHelper$2