public class com.mongodb.client.internal.ClientEncryptionImpl implements com.mongodb.client.vault.ClientEncryption, java.io.Closeable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.mongodb.client.internal.ClientEncryptionImpl
  super_class: java.lang.Object
{
  private final com.mongodb.client.internal.Crypt crypt;
    descriptor: Lcom/mongodb/client/internal/Crypt;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final com.mongodb.client.MongoClient keyVaultClient;
    descriptor: Lcom/mongodb/client/MongoClient;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(com.mongodb.ClientEncryptionSettings);
    descriptor: (Lcom/mongodb/ClientEncryptionSettings;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.client.internal.ClientEncryptionImpl this
        start local 1 // com.mongodb.ClientEncryptionSettings options
         0: .line 38
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 39
            aload 0 /* this */
            aload 1 /* options */
            invokevirtual com.mongodb.ClientEncryptionSettings.getKeyVaultMongoClientSettings:()Lcom/mongodb/MongoClientSettings;
            invokestatic com.mongodb.client.MongoClients.create:(Lcom/mongodb/MongoClientSettings;)Lcom/mongodb/client/MongoClient;
            putfield com.mongodb.client.internal.ClientEncryptionImpl.keyVaultClient:Lcom/mongodb/client/MongoClient;
         2: .line 40
            aload 0 /* this */
            aload 0 /* this */
            getfield com.mongodb.client.internal.ClientEncryptionImpl.keyVaultClient:Lcom/mongodb/client/MongoClient;
            invokestatic com.mongodb.client.internal.SimpleMongoClients.create:(Lcom/mongodb/client/MongoClient;)Lcom/mongodb/client/internal/SimpleMongoClient;
            aload 1 /* options */
            invokestatic com.mongodb.client.internal.Crypts.create:(Lcom/mongodb/client/internal/SimpleMongoClient;Lcom/mongodb/ClientEncryptionSettings;)Lcom/mongodb/client/internal/Crypt;
            putfield com.mongodb.client.internal.ClientEncryptionImpl.crypt:Lcom/mongodb/client/internal/Crypt;
         3: .line 41
            aload 0 /* this */
            aload 1 /* options */
            putfield com.mongodb.client.internal.ClientEncryptionImpl.options:Lcom/mongodb/ClientEncryptionSettings;
         4: .line 42
            return
        end local 1 // com.mongodb.ClientEncryptionSettings options
        end local 0 // com.mongodb.client.internal.ClientEncryptionImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lcom/mongodb/client/internal/ClientEncryptionImpl;
            0    5     1  options  Lcom/mongodb/ClientEncryptionSettings;
    MethodParameters:
         Name  Flags
      options  final

  public org.bson.BsonBinary createDataKey(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/bson/BsonBinary;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.client.internal.ClientEncryptionImpl this
        start local 1 // java.lang.String kmsProvider
         0: .line 46
            aload 0 /* this */
            aload 1 /* kmsProvider */
            new com.mongodb.client.model.vault.DataKeyOptions
            dup
            invokespecial com.mongodb.client.model.vault.DataKeyOptions.<init>:()V
            invokevirtual com.mongodb.client.internal.ClientEncryptionImpl.createDataKey:(Ljava/lang/String;Lcom/mongodb/client/model/vault/DataKeyOptions;)Lorg/bson/BsonBinary;
            areturn
        end local 1 // java.lang.String kmsProvider
        end local 0 // com.mongodb.client.internal.ClientEncryptionImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/mongodb/client/internal/ClientEncryptionImpl;
            0    1     1  kmsProvider  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      kmsProvider  final

  public org.bson.BsonBinary createDataKey(java.lang.String, com.mongodb.client.model.vault.DataKeyOptions);
    descriptor: (Ljava/lang/String;Lcom/mongodb/client/model/vault/DataKeyOptions;)Lorg/bson/BsonBinary;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // com.mongodb.client.internal.ClientEncryptionImpl this
        start local 1 // java.lang.String kmsProvider
        start local 2 // com.mongodb.client.model.vault.DataKeyOptions dataKeyOptions
         0: .line 51
            aload 0 /* this */
            getfield com.mongodb.client.internal.ClientEncryptionImpl.crypt:Lcom/mongodb/client/internal/Crypt;
            aload 1 /* kmsProvider */
            aload 2 /* dataKeyOptions */
            invokevirtual com.mongodb.client.internal.Crypt.createDataKey:(Ljava/lang/String;Lcom/mongodb/client/model/vault/DataKeyOptions;)Lorg/bson/BsonDocument;
            astore 3 /* dataKeyDocument */
        start local 3 // org.bson.BsonDocument dataKeyDocument
         1: .line 53
            new com.mongodb.MongoNamespace
            dup
            aload 0 /* this */
            getfield com.mongodb.client.internal.ClientEncryptionImpl.options:Lcom/mongodb/ClientEncryptionSettings;
            invokevirtual com.mongodb.ClientEncryptionSettings.getKeyVaultNamespace:()Ljava/lang/String;
            invokespecial com.mongodb.MongoNamespace.<init>:(Ljava/lang/String;)V
            astore 4 /* namespace */
        start local 4 // com.mongodb.MongoNamespace namespace
         2: .line 54
            aload 0 /* this */
            getfield com.mongodb.client.internal.ClientEncryptionImpl.keyVaultClient:Lcom/mongodb/client/MongoClient;
            aload 4 /* namespace */
            invokevirtual com.mongodb.MongoNamespace.getDatabaseName:()Ljava/lang/String;
            invokeinterface com.mongodb.client.MongoClient.getDatabase:(Ljava/lang/String;)Lcom/mongodb/client/MongoDatabase;
            aload 4 /* namespace */
            invokevirtual com.mongodb.MongoNamespace.getCollectionName:()Ljava/lang/String;
            ldc Lorg/bson/BsonDocument;
            invokeinterface com.mongodb.client.MongoDatabase.getCollection:(Ljava/lang/String;Ljava/lang/Class;)Lcom/mongodb/client/MongoCollection;
         3: .line 55
            getstatic com.mongodb.WriteConcern.MAJORITY:Lcom/mongodb/WriteConcern;
            invokeinterface com.mongodb.client.MongoCollection.withWriteConcern:(Lcom/mongodb/WriteConcern;)Lcom/mongodb/client/MongoCollection;
         4: .line 56
            aload 3 /* dataKeyDocument */
            invokeinterface com.mongodb.client.MongoCollection.insertOne:(Ljava/lang/Object;)V
         5: .line 57
            aload 3 /* dataKeyDocument */
            ldc "_id"
            invokevirtual org.bson.BsonDocument.getBinary:(Ljava/lang/Object;)Lorg/bson/BsonBinary;
            areturn
        end local 4 // com.mongodb.MongoNamespace namespace
        end local 3 // org.bson.BsonDocument dataKeyDocument
        end local 2 // com.mongodb.client.model.vault.DataKeyOptions dataKeyOptions
        end local 1 // java.lang.String kmsProvider
        end local 0 // com.mongodb.client.internal.ClientEncryptionImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0             this  Lcom/mongodb/client/internal/ClientEncryptionImpl;
            0    6     1      kmsProvider  Ljava/lang/String;
            0    6     2   dataKeyOptions  Lcom/mongodb/client/model/vault/DataKeyOptions;
            1    6     3  dataKeyDocument  Lorg/bson/BsonDocument;
            2    6     4        namespace  Lcom/mongodb/MongoNamespace;
    MethodParameters:
                Name  Flags
      kmsProvider     final
      dataKeyOptions  final

  public org.bson.BsonBinary encrypt(org.bson.BsonValue, com.mongodb.client.model.vault.EncryptOptions);
    descriptor: (Lorg/bson/BsonValue;Lcom/mongodb/client/model/vault/EncryptOptions;)Lorg/bson/BsonBinary;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.mongodb.client.internal.ClientEncryptionImpl this
        start local 1 // org.bson.BsonValue value
        start local 2 // com.mongodb.client.model.vault.EncryptOptions options
         0: .line 62
            aload 0 /* this */
            getfield com.mongodb.client.internal.ClientEncryptionImpl.crypt:Lcom/mongodb/client/internal/Crypt;
            aload 1 /* value */
            aload 2 /* options */
            invokevirtual com.mongodb.client.internal.Crypt.encryptExplicitly:(Lorg/bson/BsonValue;Lcom/mongodb/client/model/vault/EncryptOptions;)Lorg/bson/BsonBinary;
            areturn
        end local 2 // com.mongodb.client.model.vault.EncryptOptions options
        end local 1 // org.bson.BsonValue value
        end local 0 // com.mongodb.client.internal.ClientEncryptionImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/mongodb/client/internal/ClientEncryptionImpl;
            0    1     1    value  Lorg/bson/BsonValue;
            0    1     2  options  Lcom/mongodb/client/model/vault/EncryptOptions;
    MethodParameters:
         Name  Flags
      value    final
      options  final

  public org.bson.BsonValue decrypt(org.bson.BsonBinary);
    descriptor: (Lorg/bson/BsonBinary;)Lorg/bson/BsonValue;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.client.internal.ClientEncryptionImpl this
        start local 1 // org.bson.BsonBinary value
         0: .line 67
            aload 0 /* this */
            getfield com.mongodb.client.internal.ClientEncryptionImpl.crypt:Lcom/mongodb/client/internal/Crypt;
            aload 1 /* value */
            invokevirtual com.mongodb.client.internal.Crypt.decryptExplicitly:(Lorg/bson/BsonBinary;)Lorg/bson/BsonValue;
            areturn
        end local 1 // org.bson.BsonBinary value
        end local 0 // com.mongodb.client.internal.ClientEncryptionImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/mongodb/client/internal/ClientEncryptionImpl;
            0    1     1  value  Lorg/bson/BsonBinary;
    MethodParameters:
       Name  Flags
      value  final

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.client.internal.ClientEncryptionImpl this
         0: .line 72
            aload 0 /* this */
            getfield com.mongodb.client.internal.ClientEncryptionImpl.crypt:Lcom/mongodb/client/internal/Crypt;
            invokevirtual com.mongodb.client.internal.Crypt.close:()V
         1: .line 73
            aload 0 /* this */
            getfield com.mongodb.client.internal.ClientEncryptionImpl.keyVaultClient:Lcom/mongodb/client/MongoClient;
            invokeinterface com.mongodb.client.MongoClient.close:()V
         2: .line 74
            return
        end local 0 // com.mongodb.client.internal.ClientEncryptionImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/mongodb/client/internal/ClientEncryptionImpl;
}
SourceFile: "ClientEncryptionImpl.java"