class com.mongodb.client.internal.CryptConnection implements com.mongodb.connection.Connection
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.mongodb.client.internal.CryptConnection
  super_class: java.lang.Object
{
  private static final org.bson.codecs.configuration.CodecRegistry REGISTRY;
    descriptor: Lorg/bson/codecs/configuration/CodecRegistry;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int MAX_SPLITTABLE_DOCUMENT_SIZE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2097152

  private final com.mongodb.connection.Connection wrapped;
    descriptor: Lcom/mongodb/connection/Connection;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.mongodb.client.internal.Crypt crypt;
    descriptor: Lcom/mongodb/client/internal/Crypt;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=0, args_size=0
         0: .line 62
            iconst_1
            anewarray org.bson.codecs.configuration.CodecProvider
            dup
            iconst_0
            new org.bson.codecs.BsonValueCodecProvider
            dup
            invokespecial org.bson.codecs.BsonValueCodecProvider.<init>:()V
            aastore
            invokestatic org.bson.codecs.configuration.CodecRegistries.fromProviders:([Lorg/bson/codecs/configuration/CodecProvider;)Lorg/bson/codecs/configuration/CodecRegistry;
            putstatic com.mongodb.client.internal.CryptConnection.REGISTRY:Lorg/bson/codecs/configuration/CodecRegistry;
         1: .line 63
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(com.mongodb.connection.Connection, com.mongodb.client.internal.Crypt);
    descriptor: (Lcom/mongodb/connection/Connection;Lcom/mongodb/client/internal/Crypt;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.mongodb.client.internal.CryptConnection this
        start local 1 // com.mongodb.connection.Connection wrapped
        start local 2 // com.mongodb.client.internal.Crypt crypt
         0: .line 68
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 69
            aload 0 /* this */
            aload 1 /* wrapped */
            putfield com.mongodb.client.internal.CryptConnection.wrapped:Lcom/mongodb/connection/Connection;
         2: .line 70
            aload 0 /* this */
            aload 2 /* crypt */
            putfield com.mongodb.client.internal.CryptConnection.crypt:Lcom/mongodb/client/internal/Crypt;
         3: .line 71
            return
        end local 2 // com.mongodb.client.internal.Crypt crypt
        end local 1 // com.mongodb.connection.Connection wrapped
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lcom/mongodb/client/internal/CryptConnection;
            0    4     1  wrapped  Lcom/mongodb/connection/Connection;
            0    4     2    crypt  Lcom/mongodb/client/internal/Crypt;
    MethodParameters:
         Name  Flags
      wrapped  final
      crypt    final

  public int getCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.client.internal.CryptConnection this
         0: .line 75
            aload 0 /* this */
            getfield com.mongodb.client.internal.CryptConnection.wrapped:Lcom/mongodb/connection/Connection;
            invokeinterface com.mongodb.connection.Connection.getCount:()I
            ireturn
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/client/internal/CryptConnection;

  public com.mongodb.client.internal.CryptConnection retain();
    descriptor: ()Lcom/mongodb/client/internal/CryptConnection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.client.internal.CryptConnection this
         0: .line 80
            aload 0 /* this */
            getfield com.mongodb.client.internal.CryptConnection.wrapped:Lcom/mongodb/connection/Connection;
            invokeinterface com.mongodb.connection.Connection.retain:()Lcom/mongodb/connection/Connection;
            pop
         1: .line 81
            aload 0 /* this */
            areturn
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/client/internal/CryptConnection;

  public void release();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.client.internal.CryptConnection this
         0: .line 86
            aload 0 /* this */
            getfield com.mongodb.client.internal.CryptConnection.wrapped:Lcom/mongodb/connection/Connection;
            invokeinterface com.mongodb.connection.Connection.release:()V
         1: .line 87
            return
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/client/internal/CryptConnection;

  public com.mongodb.connection.ConnectionDescription getDescription();
    descriptor: ()Lcom/mongodb/connection/ConnectionDescription;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.client.internal.CryptConnection this
         0: .line 91
            aload 0 /* this */
            getfield com.mongodb.client.internal.CryptConnection.wrapped:Lcom/mongodb/connection/Connection;
            invokeinterface com.mongodb.connection.Connection.getDescription:()Lcom/mongodb/connection/ConnectionDescription;
            areturn
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/client/internal/CryptConnection;

  public <T> T command(java.lang.String, org.bson.BsonDocument, org.bson.FieldNameValidator, com.mongodb.ReadPreference, org.bson.codecs.Decoder<T>, com.mongodb.session.SessionContext, boolean, com.mongodb.connection.SplittablePayload, org.bson.FieldNameValidator);
    descriptor: (Ljava/lang/String;Lorg/bson/BsonDocument;Lorg/bson/FieldNameValidator;Lcom/mongodb/ReadPreference;Lorg/bson/codecs/Decoder;Lcom/mongodb/session/SessionContext;ZLcom/mongodb/connection/SplittablePayload;Lorg/bson/FieldNameValidator;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=17, args_size=10
        start local 0 // com.mongodb.client.internal.CryptConnection this
        start local 1 // java.lang.String database
        start local 2 // org.bson.BsonDocument command
        start local 3 // org.bson.FieldNameValidator commandFieldNameValidator
        start local 4 // com.mongodb.ReadPreference readPreference
        start local 5 // org.bson.codecs.Decoder commandResultDecoder
        start local 6 // com.mongodb.session.SessionContext sessionContext
        start local 7 // boolean responseExpected
        start local 8 // com.mongodb.connection.SplittablePayload payload
        start local 9 // org.bson.FieldNameValidator payloadFieldNameValidator
         0: .line 100
            aload 0 /* this */
            getfield com.mongodb.client.internal.CryptConnection.wrapped:Lcom/mongodb/connection/Connection;
            invokeinterface com.mongodb.connection.Connection.getDescription:()Lcom/mongodb/connection/ConnectionDescription;
            invokestatic com.mongodb.internal.operation.ServerVersionHelper.serverIsLessThanVersionFourDotTwo:(Lcom/mongodb/connection/ConnectionDescription;)Z
            ifeq 2
         1: .line 101
            new com.mongodb.MongoClientException
            dup
            ldc "Auto-encryption requires a minimum MongoDB version of 4.2"
            invokespecial com.mongodb.MongoClientException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 104
      StackMap locals:
      StackMap stack:
            new org.bson.io.BasicOutputBuffer
            dup
            invokespecial org.bson.io.BasicOutputBuffer.<init>:()V
            astore 10 /* bsonOutput */
        start local 10 // org.bson.io.BasicOutputBuffer bsonOutput
         3: .line 105
            new org.bson.BsonBinaryWriter
            dup
            new org.bson.BsonWriterSettings
            dup
            invokespecial org.bson.BsonWriterSettings.<init>:()V
         4: .line 106
            new org.bson.BsonBinaryWriterSettings
            dup
            aload 0 /* this */
            invokevirtual com.mongodb.client.internal.CryptConnection.getDescription:()Lcom/mongodb/connection/ConnectionDescription;
            invokevirtual com.mongodb.connection.ConnectionDescription.getMaxDocumentSize:()I
            invokespecial org.bson.BsonBinaryWriterSettings.<init>:(I)V
         5: .line 107
            aload 10 /* bsonOutput */
            aload 0 /* this */
            aload 8 /* payload */
            aload 3 /* commandFieldNameValidator */
            aload 9 /* payloadFieldNameValidator */
            invokevirtual com.mongodb.client.internal.CryptConnection.getFieldNameValidator:(Lcom/mongodb/connection/SplittablePayload;Lorg/bson/FieldNameValidator;Lorg/bson/FieldNameValidator;)Lorg/bson/FieldNameValidator;
         6: .line 105
            invokespecial org.bson.BsonBinaryWriter.<init>:(Lorg/bson/BsonWriterSettings;Lorg/bson/BsonBinaryWriterSettings;Lorg/bson/io/BsonOutput;Lorg/bson/FieldNameValidator;)V
            astore 11 /* bsonBinaryWriter */
        start local 11 // org.bson.BsonBinaryWriter bsonBinaryWriter
         7: .line 108
            aload 8 /* payload */
            ifnonnull 9
         8: .line 109
            aload 11 /* bsonBinaryWriter */
            goto 12
         9: .line 110
      StackMap locals: org.bson.io.BasicOutputBuffer org.bson.BsonBinaryWriter
      StackMap stack:
            new com.mongodb.internal.connection.SplittablePayloadBsonWriter
            dup
            aload 11 /* bsonBinaryWriter */
            aload 10 /* bsonOutput */
            aload 0 /* this */
            invokevirtual com.mongodb.client.internal.CryptConnection.createSplittablePayloadMessageSettings:()Lcom/mongodb/internal/connection/MessageSettings;
            aload 8 /* payload */
        10: .line 111
            ldc 2097152
        11: .line 110
            invokespecial com.mongodb.internal.connection.SplittablePayloadBsonWriter.<init>:(Lorg/bson/BsonBinaryWriter;Lorg/bson/io/BsonOutput;Lcom/mongodb/internal/connection/MessageSettings;Lcom/mongodb/connection/SplittablePayload;I)V
        12: .line 108
      StackMap locals:
      StackMap stack: org.bson.BsonWriter
            astore 12 /* writer */
        start local 12 // org.bson.BsonWriter writer
        13: .line 113
            aload 0 /* this */
            aload 2 /* command */
            invokevirtual com.mongodb.client.internal.CryptConnection.getEncoder:(Lorg/bson/BsonDocument;)Lorg/bson/codecs/Codec;
            aload 12 /* writer */
            aload 2 /* command */
            invokestatic org.bson.codecs.EncoderContext.builder:()Lorg/bson/codecs/EncoderContext$Builder;
            invokevirtual org.bson.codecs.EncoderContext$Builder.build:()Lorg/bson/codecs/EncoderContext;
            invokeinterface org.bson.codecs.Codec.encode:(Lorg/bson/BsonWriter;Ljava/lang/Object;Lorg/bson/codecs/EncoderContext;)V
        14: .line 115
            aload 0 /* this */
            getfield com.mongodb.client.internal.CryptConnection.crypt:Lcom/mongodb/client/internal/Crypt;
            aload 1 /* database */
        15: .line 116
            new org.bson.RawBsonDocument
            dup
            aload 10 /* bsonOutput */
            invokevirtual org.bson.io.BasicOutputBuffer.getInternalBuffer:()[B
            iconst_0
            aload 10 /* bsonOutput */
            invokevirtual org.bson.io.BasicOutputBuffer.getSize:()I
            invokespecial org.bson.RawBsonDocument.<init>:([BII)V
        16: .line 115
            invokevirtual com.mongodb.client.internal.Crypt.encrypt:(Ljava/lang/String;Lorg/bson/RawBsonDocument;)Lorg/bson/RawBsonDocument;
            astore 13 /* encryptedCommand */
        start local 13 // org.bson.RawBsonDocument encryptedCommand
        17: .line 118
            aload 0 /* this */
            getfield com.mongodb.client.internal.CryptConnection.wrapped:Lcom/mongodb/connection/Connection;
            aload 1 /* database */
            aload 13 /* encryptedCommand */
            aload 3 /* commandFieldNameValidator */
            aload 4 /* readPreference */
        18: .line 119
            new org.bson.codecs.RawBsonDocumentCodec
            dup
            invokespecial org.bson.codecs.RawBsonDocumentCodec.<init>:()V
            aload 6 /* sessionContext */
            iload 7 /* responseExpected */
            aconst_null
            aconst_null
        19: .line 118
            invokeinterface com.mongodb.connection.Connection.command:(Ljava/lang/String;Lorg/bson/BsonDocument;Lorg/bson/FieldNameValidator;Lcom/mongodb/ReadPreference;Lorg/bson/codecs/Decoder;Lcom/mongodb/session/SessionContext;ZLcom/mongodb/connection/SplittablePayload;Lorg/bson/FieldNameValidator;)Ljava/lang/Object;
            checkcast org.bson.RawBsonDocument
            astore 14 /* encryptedResponse */
        start local 14 // org.bson.RawBsonDocument encryptedResponse
        20: .line 121
            aload 0 /* this */
            getfield com.mongodb.client.internal.CryptConnection.crypt:Lcom/mongodb/client/internal/Crypt;
            aload 14 /* encryptedResponse */
            invokevirtual com.mongodb.client.internal.Crypt.decrypt:(Lorg/bson/RawBsonDocument;)Lorg/bson/RawBsonDocument;
            astore 15 /* decryptedResponse */
        start local 15 // org.bson.RawBsonDocument decryptedResponse
        21: .line 123
            new org.bson.BsonBinaryReader
            dup
            aload 15 /* decryptedResponse */
            invokevirtual org.bson.RawBsonDocument.getByteBuffer:()Lorg/bson/ByteBuf;
            invokeinterface org.bson.ByteBuf.asNIO:()Ljava/nio/ByteBuffer;
            invokespecial org.bson.BsonBinaryReader.<init>:(Ljava/nio/ByteBuffer;)V
            astore 16 /* reader */
        start local 16 // org.bson.BsonBinaryReader reader
        22: .line 125
            aload 5 /* commandResultDecoder */
            aload 16 /* reader */
            invokestatic org.bson.codecs.DecoderContext.builder:()Lorg/bson/codecs/DecoderContext$Builder;
            invokevirtual org.bson.codecs.DecoderContext$Builder.build:()Lorg/bson/codecs/DecoderContext;
            invokeinterface org.bson.codecs.Decoder.decode:(Lorg/bson/BsonReader;Lorg/bson/codecs/DecoderContext;)Ljava/lang/Object;
            areturn
        end local 16 // org.bson.BsonBinaryReader reader
        end local 15 // org.bson.RawBsonDocument decryptedResponse
        end local 14 // org.bson.RawBsonDocument encryptedResponse
        end local 13 // org.bson.RawBsonDocument encryptedCommand
        end local 12 // org.bson.BsonWriter writer
        end local 11 // org.bson.BsonBinaryWriter bsonBinaryWriter
        end local 10 // org.bson.io.BasicOutputBuffer bsonOutput
        end local 9 // org.bson.FieldNameValidator payloadFieldNameValidator
        end local 8 // com.mongodb.connection.SplittablePayload payload
        end local 7 // boolean responseExpected
        end local 6 // com.mongodb.session.SessionContext sessionContext
        end local 5 // org.bson.codecs.Decoder commandResultDecoder
        end local 4 // com.mongodb.ReadPreference readPreference
        end local 3 // org.bson.FieldNameValidator commandFieldNameValidator
        end local 2 // org.bson.BsonDocument command
        end local 1 // java.lang.String database
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   23     0                       this  Lcom/mongodb/client/internal/CryptConnection;
            0   23     1                   database  Ljava/lang/String;
            0   23     2                    command  Lorg/bson/BsonDocument;
            0   23     3  commandFieldNameValidator  Lorg/bson/FieldNameValidator;
            0   23     4             readPreference  Lcom/mongodb/ReadPreference;
            0   23     5       commandResultDecoder  Lorg/bson/codecs/Decoder<TT;>;
            0   23     6             sessionContext  Lcom/mongodb/session/SessionContext;
            0   23     7           responseExpected  Z
            0   23     8                    payload  Lcom/mongodb/connection/SplittablePayload;
            0   23     9  payloadFieldNameValidator  Lorg/bson/FieldNameValidator;
            3   23    10                 bsonOutput  Lorg/bson/io/BasicOutputBuffer;
            7   23    11           bsonBinaryWriter  Lorg/bson/BsonBinaryWriter;
           13   23    12                     writer  Lorg/bson/BsonWriter;
           17   23    13           encryptedCommand  Lorg/bson/RawBsonDocument;
           20   23    14          encryptedResponse  Lorg/bson/RawBsonDocument;
           21   23    15          decryptedResponse  Lorg/bson/RawBsonDocument;
           22   23    16                     reader  Lorg/bson/BsonBinaryReader;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;Lorg/bson/BsonDocument;Lorg/bson/FieldNameValidator;Lcom/mongodb/ReadPreference;Lorg/bson/codecs/Decoder<TT;>;Lcom/mongodb/session/SessionContext;ZLcom/mongodb/connection/SplittablePayload;Lorg/bson/FieldNameValidator;)TT;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      5:
      6:
      7:
        com.mongodb.lang.Nullable()
      8:
        com.mongodb.lang.Nullable()
    MethodParameters:
                           Name  Flags
      database                   final
      command                    final
      commandFieldNameValidator  final
      readPreference             final
      commandResultDecoder       final
      sessionContext             final
      responseExpected           final
      payload                    final
      payloadFieldNameValidator  final

  public <T> T command(java.lang.String, org.bson.BsonDocument, org.bson.FieldNameValidator, com.mongodb.ReadPreference, org.bson.codecs.Decoder<T>, com.mongodb.session.SessionContext);
    descriptor: (Ljava/lang/String;Lorg/bson/BsonDocument;Lorg/bson/FieldNameValidator;Lcom/mongodb/ReadPreference;Lorg/bson/codecs/Decoder;Lcom/mongodb/session/SessionContext;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=7, args_size=7
        start local 0 // com.mongodb.client.internal.CryptConnection this
        start local 1 // java.lang.String database
        start local 2 // org.bson.BsonDocument command
        start local 3 // org.bson.FieldNameValidator fieldNameValidator
        start local 4 // com.mongodb.ReadPreference readPreference
        start local 5 // org.bson.codecs.Decoder commandResultDecoder
        start local 6 // com.mongodb.session.SessionContext sessionContext
         0: .line 131
            aload 0 /* this */
            aload 1 /* database */
            aload 2 /* command */
            aload 3 /* fieldNameValidator */
            aload 4 /* readPreference */
            aload 5 /* commandResultDecoder */
            aload 6 /* sessionContext */
            iconst_1
            aconst_null
            aconst_null
            invokevirtual com.mongodb.client.internal.CryptConnection.command:(Ljava/lang/String;Lorg/bson/BsonDocument;Lorg/bson/FieldNameValidator;Lcom/mongodb/ReadPreference;Lorg/bson/codecs/Decoder;Lcom/mongodb/session/SessionContext;ZLcom/mongodb/connection/SplittablePayload;Lorg/bson/FieldNameValidator;)Ljava/lang/Object;
            areturn
        end local 6 // com.mongodb.session.SessionContext sessionContext
        end local 5 // org.bson.codecs.Decoder commandResultDecoder
        end local 4 // com.mongodb.ReadPreference readPreference
        end local 3 // org.bson.FieldNameValidator fieldNameValidator
        end local 2 // org.bson.BsonDocument command
        end local 1 // java.lang.String database
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    1     0                  this  Lcom/mongodb/client/internal/CryptConnection;
            0    1     1              database  Ljava/lang/String;
            0    1     2               command  Lorg/bson/BsonDocument;
            0    1     3    fieldNameValidator  Lorg/bson/FieldNameValidator;
            0    1     4        readPreference  Lcom/mongodb/ReadPreference;
            0    1     5  commandResultDecoder  Lorg/bson/codecs/Decoder<TT;>;
            0    1     6        sessionContext  Lcom/mongodb/session/SessionContext;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;Lorg/bson/BsonDocument;Lorg/bson/FieldNameValidator;Lcom/mongodb/ReadPreference;Lorg/bson/codecs/Decoder<TT;>;Lcom/mongodb/session/SessionContext;)TT;
    MethodParameters:
                      Name  Flags
      database              final
      command               final
      fieldNameValidator    final
      readPreference        final
      commandResultDecoder  final
      sessionContext        final

  private org.bson.codecs.Codec<org.bson.BsonDocument> getEncoder(org.bson.BsonDocument);
    descriptor: (Lorg/bson/BsonDocument;)Lorg/bson/codecs/Codec;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.client.internal.CryptConnection this
        start local 1 // org.bson.BsonDocument command
         0: .line 136
            getstatic com.mongodb.client.internal.CryptConnection.REGISTRY:Lorg/bson/codecs/configuration/CodecRegistry;
            aload 1 /* command */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokeinterface org.bson.codecs.configuration.CodecRegistry.get:(Ljava/lang/Class;)Lorg/bson/codecs/Codec;
            areturn
        end local 1 // org.bson.BsonDocument command
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/mongodb/client/internal/CryptConnection;
            0    1     1  command  Lorg/bson/BsonDocument;
    Signature: (Lorg/bson/BsonDocument;)Lorg/bson/codecs/Codec<Lorg/bson/BsonDocument;>;
    MethodParameters:
         Name  Flags
      command  final

  private org.bson.FieldNameValidator getFieldNameValidator(com.mongodb.connection.SplittablePayload, org.bson.FieldNameValidator, org.bson.FieldNameValidator);
    descriptor: (Lcom/mongodb/connection/SplittablePayload;Lorg/bson/FieldNameValidator;Lorg/bson/FieldNameValidator;)Lorg/bson/FieldNameValidator;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.mongodb.client.internal.CryptConnection this
        start local 1 // com.mongodb.connection.SplittablePayload payload
        start local 2 // org.bson.FieldNameValidator commandFieldNameValidator
        start local 3 // org.bson.FieldNameValidator payloadFieldNameValidator
         0: .line 142
            aload 1 /* payload */
            ifnonnull 2
         1: .line 143
            aload 2 /* commandFieldNameValidator */
            areturn
         2: .line 146
      StackMap locals:
      StackMap stack:
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 4 /* rootMap */
        start local 4 // java.util.Map rootMap
         3: .line 147
            aload 4 /* rootMap */
            aload 1 /* payload */
            invokevirtual com.mongodb.connection.SplittablePayload.getPayloadName:()Ljava/lang/String;
            aload 3 /* payloadFieldNameValidator */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 148
            new com.mongodb.internal.validator.MappedFieldNameValidator
            dup
            aload 2 /* commandFieldNameValidator */
            aload 4 /* rootMap */
            invokespecial com.mongodb.internal.validator.MappedFieldNameValidator.<init>:(Lorg/bson/FieldNameValidator;Ljava/util/Map;)V
            areturn
        end local 4 // java.util.Map rootMap
        end local 3 // org.bson.FieldNameValidator payloadFieldNameValidator
        end local 2 // org.bson.FieldNameValidator commandFieldNameValidator
        end local 1 // com.mongodb.connection.SplittablePayload payload
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0    5     0                       this  Lcom/mongodb/client/internal/CryptConnection;
            0    5     1                    payload  Lcom/mongodb/connection/SplittablePayload;
            0    5     2  commandFieldNameValidator  Lorg/bson/FieldNameValidator;
            0    5     3  payloadFieldNameValidator  Lorg/bson/FieldNameValidator;
            3    5     4                    rootMap  Ljava/util/Map<Ljava/lang/String;Lorg/bson/FieldNameValidator;>;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
      2:
        com.mongodb.lang.Nullable()
    MethodParameters:
                           Name  Flags
      payload                    final
      commandFieldNameValidator  final
      payloadFieldNameValidator  final

  private com.mongodb.internal.connection.MessageSettings createSplittablePayloadMessageSettings();
    descriptor: ()Lcom/mongodb/internal/connection/MessageSettings;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.client.internal.CryptConnection this
         0: .line 152
            invokestatic com.mongodb.internal.connection.MessageSettings.builder:()Lcom/mongodb/internal/connection/MessageSettings$Builder;
         1: .line 153
            aload 0 /* this */
            invokevirtual com.mongodb.client.internal.CryptConnection.getDescription:()Lcom/mongodb/connection/ConnectionDescription;
            invokevirtual com.mongodb.connection.ConnectionDescription.getMaxBatchCount:()I
            invokevirtual com.mongodb.internal.connection.MessageSettings$Builder.maxBatchCount:(I)Lcom/mongodb/internal/connection/MessageSettings$Builder;
         2: .line 154
            aload 0 /* this */
            invokevirtual com.mongodb.client.internal.CryptConnection.getDescription:()Lcom/mongodb/connection/ConnectionDescription;
            invokevirtual com.mongodb.connection.ConnectionDescription.getMaxMessageSize:()I
            invokevirtual com.mongodb.internal.connection.MessageSettings$Builder.maxMessageSize:(I)Lcom/mongodb/internal/connection/MessageSettings$Builder;
         3: .line 155
            aload 0 /* this */
            invokevirtual com.mongodb.client.internal.CryptConnection.getDescription:()Lcom/mongodb/connection/ConnectionDescription;
            invokevirtual com.mongodb.connection.ConnectionDescription.getMaxDocumentSize:()I
            invokevirtual com.mongodb.internal.connection.MessageSettings$Builder.maxDocumentSize:(I)Lcom/mongodb/internal/connection/MessageSettings$Builder;
         4: .line 156
            invokevirtual com.mongodb.internal.connection.MessageSettings$Builder.build:()Lcom/mongodb/internal/connection/MessageSettings;
         5: .line 152
            areturn
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/mongodb/client/internal/CryptConnection;

  public <T> T command(java.lang.String, org.bson.BsonDocument, boolean, org.bson.FieldNameValidator, org.bson.codecs.Decoder<T>);
    descriptor: (Ljava/lang/String;Lorg/bson/BsonDocument;ZLorg/bson/FieldNameValidator;Lorg/bson/codecs/Decoder;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=6, args_size=6
        start local 0 // com.mongodb.client.internal.CryptConnection this
        start local 1 // java.lang.String database
        start local 2 // org.bson.BsonDocument command
        start local 3 // boolean slaveOk
        start local 4 // org.bson.FieldNameValidator fieldNameValidator
        start local 5 // org.bson.codecs.Decoder commandResultDecoder
         0: .line 165
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 5 // org.bson.codecs.Decoder commandResultDecoder
        end local 4 // org.bson.FieldNameValidator fieldNameValidator
        end local 3 // boolean slaveOk
        end local 2 // org.bson.BsonDocument command
        end local 1 // java.lang.String database
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    1     0                  this  Lcom/mongodb/client/internal/CryptConnection;
            0    1     1              database  Ljava/lang/String;
            0    1     2               command  Lorg/bson/BsonDocument;
            0    1     3               slaveOk  Z
            0    1     4    fieldNameValidator  Lorg/bson/FieldNameValidator;
            0    1     5  commandResultDecoder  Lorg/bson/codecs/Decoder<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;Lorg/bson/BsonDocument;ZLorg/bson/FieldNameValidator;Lorg/bson/codecs/Decoder<TT;>;)TT;
    MethodParameters:
                      Name  Flags
      database              final
      command               final
      slaveOk               final
      fieldNameValidator    final
      commandResultDecoder  final

  public com.mongodb.WriteConcernResult insert(com.mongodb.MongoNamespace, boolean, com.mongodb.bulk.InsertRequest);
    descriptor: (Lcom/mongodb/MongoNamespace;ZLcom/mongodb/bulk/InsertRequest;)Lcom/mongodb/WriteConcernResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.mongodb.client.internal.CryptConnection this
        start local 1 // com.mongodb.MongoNamespace namespace
        start local 2 // boolean ordered
        start local 3 // com.mongodb.bulk.InsertRequest insertRequest
         0: .line 170
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 3 // com.mongodb.bulk.InsertRequest insertRequest
        end local 2 // boolean ordered
        end local 1 // com.mongodb.MongoNamespace namespace
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/mongodb/client/internal/CryptConnection;
            0    1     1      namespace  Lcom/mongodb/MongoNamespace;
            0    1     2        ordered  Z
            0    1     3  insertRequest  Lcom/mongodb/bulk/InsertRequest;
    MethodParameters:
               Name  Flags
      namespace      final
      ordered        final
      insertRequest  final

  public com.mongodb.WriteConcernResult update(com.mongodb.MongoNamespace, boolean, com.mongodb.bulk.UpdateRequest);
    descriptor: (Lcom/mongodb/MongoNamespace;ZLcom/mongodb/bulk/UpdateRequest;)Lcom/mongodb/WriteConcernResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.mongodb.client.internal.CryptConnection this
        start local 1 // com.mongodb.MongoNamespace namespace
        start local 2 // boolean ordered
        start local 3 // com.mongodb.bulk.UpdateRequest updateRequest
         0: .line 175
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 3 // com.mongodb.bulk.UpdateRequest updateRequest
        end local 2 // boolean ordered
        end local 1 // com.mongodb.MongoNamespace namespace
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/mongodb/client/internal/CryptConnection;
            0    1     1      namespace  Lcom/mongodb/MongoNamespace;
            0    1     2        ordered  Z
            0    1     3  updateRequest  Lcom/mongodb/bulk/UpdateRequest;
    MethodParameters:
               Name  Flags
      namespace      final
      ordered        final
      updateRequest  final

  public com.mongodb.WriteConcernResult delete(com.mongodb.MongoNamespace, boolean, com.mongodb.bulk.DeleteRequest);
    descriptor: (Lcom/mongodb/MongoNamespace;ZLcom/mongodb/bulk/DeleteRequest;)Lcom/mongodb/WriteConcernResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.mongodb.client.internal.CryptConnection this
        start local 1 // com.mongodb.MongoNamespace namespace
        start local 2 // boolean ordered
        start local 3 // com.mongodb.bulk.DeleteRequest deleteRequest
         0: .line 180
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 3 // com.mongodb.bulk.DeleteRequest deleteRequest
        end local 2 // boolean ordered
        end local 1 // com.mongodb.MongoNamespace namespace
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/mongodb/client/internal/CryptConnection;
            0    1     1      namespace  Lcom/mongodb/MongoNamespace;
            0    1     2        ordered  Z
            0    1     3  deleteRequest  Lcom/mongodb/bulk/DeleteRequest;
    MethodParameters:
               Name  Flags
      namespace      final
      ordered        final
      deleteRequest  final

  public <T> com.mongodb.connection.QueryResult<T> query(com.mongodb.MongoNamespace, org.bson.BsonDocument, org.bson.BsonDocument, int, int, boolean, boolean, boolean, boolean, boolean, boolean, org.bson.codecs.Decoder<T>);
    descriptor: (Lcom/mongodb/MongoNamespace;Lorg/bson/BsonDocument;Lorg/bson/BsonDocument;IIZZZZZZLorg/bson/codecs/Decoder;)Lcom/mongodb/connection/QueryResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=13, args_size=13
        start local 0 // com.mongodb.client.internal.CryptConnection this
        start local 1 // com.mongodb.MongoNamespace namespace
        start local 2 // org.bson.BsonDocument queryDocument
        start local 3 // org.bson.BsonDocument fields
        start local 4 // int numberToReturn
        start local 5 // int skip
        start local 6 // boolean slaveOk
        start local 7 // boolean tailableCursor
        start local 8 // boolean awaitData
        start local 9 // boolean noCursorTimeout
        start local 10 // boolean partial
        start local 11 // boolean oplogReplay
        start local 12 // org.bson.codecs.Decoder resultDecoder
         0: .line 188
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 12 // org.bson.codecs.Decoder resultDecoder
        end local 11 // boolean oplogReplay
        end local 10 // boolean partial
        end local 9 // boolean noCursorTimeout
        end local 8 // boolean awaitData
        end local 7 // boolean tailableCursor
        end local 6 // boolean slaveOk
        end local 5 // int skip
        end local 4 // int numberToReturn
        end local 3 // org.bson.BsonDocument fields
        end local 2 // org.bson.BsonDocument queryDocument
        end local 1 // com.mongodb.MongoNamespace namespace
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0             this  Lcom/mongodb/client/internal/CryptConnection;
            0    1     1        namespace  Lcom/mongodb/MongoNamespace;
            0    1     2    queryDocument  Lorg/bson/BsonDocument;
            0    1     3           fields  Lorg/bson/BsonDocument;
            0    1     4   numberToReturn  I
            0    1     5             skip  I
            0    1     6          slaveOk  Z
            0    1     7   tailableCursor  Z
            0    1     8        awaitData  Z
            0    1     9  noCursorTimeout  Z
            0    1    10          partial  Z
            0    1    11      oplogReplay  Z
            0    1    12    resultDecoder  Lorg/bson/codecs/Decoder<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lcom/mongodb/MongoNamespace;Lorg/bson/BsonDocument;Lorg/bson/BsonDocument;IIZZZZZZLorg/bson/codecs/Decoder<TT;>;)Lcom/mongodb/connection/QueryResult<TT;>;
    MethodParameters:
                 Name  Flags
      namespace        final
      queryDocument    final
      fields           final
      numberToReturn   final
      skip             final
      slaveOk          final
      tailableCursor   final
      awaitData        final
      noCursorTimeout  final
      partial          final
      oplogReplay      final
      resultDecoder    final

  public <T> com.mongodb.connection.QueryResult<T> query(com.mongodb.MongoNamespace, org.bson.BsonDocument, org.bson.BsonDocument, int, int, int, boolean, boolean, boolean, boolean, boolean, boolean, org.bson.codecs.Decoder<T>);
    descriptor: (Lcom/mongodb/MongoNamespace;Lorg/bson/BsonDocument;Lorg/bson/BsonDocument;IIIZZZZZZLorg/bson/codecs/Decoder;)Lcom/mongodb/connection/QueryResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=14, args_size=14
        start local 0 // com.mongodb.client.internal.CryptConnection this
        start local 1 // com.mongodb.MongoNamespace namespace
        start local 2 // org.bson.BsonDocument queryDocument
        start local 3 // org.bson.BsonDocument fields
        start local 4 // int skip
        start local 5 // int limit
        start local 6 // int batchSize
        start local 7 // boolean slaveOk
        start local 8 // boolean tailableCursor
        start local 9 // boolean awaitData
        start local 10 // boolean noCursorTimeout
        start local 11 // boolean partial
        start local 12 // boolean oplogReplay
        start local 13 // org.bson.codecs.Decoder resultDecoder
         0: .line 196
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 13 // org.bson.codecs.Decoder resultDecoder
        end local 12 // boolean oplogReplay
        end local 11 // boolean partial
        end local 10 // boolean noCursorTimeout
        end local 9 // boolean awaitData
        end local 8 // boolean tailableCursor
        end local 7 // boolean slaveOk
        end local 6 // int batchSize
        end local 5 // int limit
        end local 4 // int skip
        end local 3 // org.bson.BsonDocument fields
        end local 2 // org.bson.BsonDocument queryDocument
        end local 1 // com.mongodb.MongoNamespace namespace
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0             this  Lcom/mongodb/client/internal/CryptConnection;
            0    1     1        namespace  Lcom/mongodb/MongoNamespace;
            0    1     2    queryDocument  Lorg/bson/BsonDocument;
            0    1     3           fields  Lorg/bson/BsonDocument;
            0    1     4             skip  I
            0    1     5            limit  I
            0    1     6        batchSize  I
            0    1     7          slaveOk  Z
            0    1     8   tailableCursor  Z
            0    1     9        awaitData  Z
            0    1    10  noCursorTimeout  Z
            0    1    11          partial  Z
            0    1    12      oplogReplay  Z
            0    1    13    resultDecoder  Lorg/bson/codecs/Decoder<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lcom/mongodb/MongoNamespace;Lorg/bson/BsonDocument;Lorg/bson/BsonDocument;IIIZZZZZZLorg/bson/codecs/Decoder<TT;>;)Lcom/mongodb/connection/QueryResult<TT;>;
    MethodParameters:
                 Name  Flags
      namespace        final
      queryDocument    final
      fields           final
      skip             final
      limit            final
      batchSize        final
      slaveOk          final
      tailableCursor   final
      awaitData        final
      noCursorTimeout  final
      partial          final
      oplogReplay      final
      resultDecoder    final

  public <T> com.mongodb.connection.QueryResult<T> getMore(com.mongodb.MongoNamespace, long, int, org.bson.codecs.Decoder<T>);
    descriptor: (Lcom/mongodb/MongoNamespace;JILorg/bson/codecs/Decoder;)Lcom/mongodb/connection/QueryResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=6, args_size=5
        start local 0 // com.mongodb.client.internal.CryptConnection this
        start local 1 // com.mongodb.MongoNamespace namespace
        start local 2 // long cursorId
        start local 4 // int numberToReturn
        start local 5 // org.bson.codecs.Decoder resultDecoder
         0: .line 202
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 5 // org.bson.codecs.Decoder resultDecoder
        end local 4 // int numberToReturn
        end local 2 // long cursorId
        end local 1 // com.mongodb.MongoNamespace namespace
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lcom/mongodb/client/internal/CryptConnection;
            0    1     1       namespace  Lcom/mongodb/MongoNamespace;
            0    1     2        cursorId  J
            0    1     4  numberToReturn  I
            0    1     5   resultDecoder  Lorg/bson/codecs/Decoder<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lcom/mongodb/MongoNamespace;JILorg/bson/codecs/Decoder<TT;>;)Lcom/mongodb/connection/QueryResult<TT;>;
    MethodParameters:
                Name  Flags
      namespace       final
      cursorId        final
      numberToReturn  final
      resultDecoder   final

  public void killCursor(java.util.List<java.lang.Long>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.client.internal.CryptConnection this
        start local 1 // java.util.List cursors
         0: .line 207
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 1 // java.util.List cursors
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/mongodb/client/internal/CryptConnection;
            0    1     1  cursors  Ljava/util/List<Ljava/lang/Long;>;
    Signature: (Ljava/util/List<Ljava/lang/Long;>;)V
    MethodParameters:
         Name  Flags
      cursors  final

  public void killCursor(com.mongodb.MongoNamespace, java.util.List<java.lang.Long>);
    descriptor: (Lcom/mongodb/MongoNamespace;Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.mongodb.client.internal.CryptConnection this
        start local 1 // com.mongodb.MongoNamespace namespace
        start local 2 // java.util.List cursors
         0: .line 212
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 2 // java.util.List cursors
        end local 1 // com.mongodb.MongoNamespace namespace
        end local 0 // com.mongodb.client.internal.CryptConnection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/mongodb/client/internal/CryptConnection;
            0    1     1  namespace  Lcom/mongodb/MongoNamespace;
            0    1     2    cursors  Ljava/util/List<Ljava/lang/Long;>;
    Signature: (Lcom/mongodb/MongoNamespace;Ljava/util/List<Ljava/lang/Long;>;)V
    MethodParameters:
           Name  Flags
      namespace  final
      cursors    final

  public com.mongodb.binding.ReferenceCounted retain();
    descriptor: ()Lcom/mongodb/binding/ReferenceCounted;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.mongodb.client.internal.CryptConnection.retain:()Lcom/mongodb/client/internal/CryptConnection;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.mongodb.connection.Connection retain();
    descriptor: ()Lcom/mongodb/connection/Connection;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.mongodb.client.internal.CryptConnection.retain:()Lcom/mongodb/client/internal/CryptConnection;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "CryptConnection.java"
InnerClasses:
  public final Builder = com.mongodb.internal.connection.MessageSettings$Builder of com.mongodb.internal.connection.MessageSettings
  public final Builder = org.bson.codecs.DecoderContext$Builder of org.bson.codecs.DecoderContext
  public final Builder = org.bson.codecs.EncoderContext$Builder of org.bson.codecs.EncoderContext