docs: def _decrypt_data_key(self, encrypted_data_key, algorithm, encryption_context):
          """Decrypts an encrypted data key and returns the plaintext.
  
          :param data_key: Encrypted data key
          :type data_key: aws_encryption_sdk.structures.EncryptedDataKey
          :param algorithm: Algorithm object which directs how this Master Key will encrypt the data key
          :type algorithm: aws_encryption_sdk.identifiers.Algorithm
          :param dict encryption_context: Encryption context to use in decryption
          :returns: Data key containing decrypted data key
          :rtype: aws_encryption_sdk.structures.DataKey
          :raises DecryptKeyError: if Master Key is unable to decrypt data key
          """
          # Wrapped EncryptedDataKey to deserialized EncryptedData
          encrypted_wrapped_key = aws_encryption_sdk.internal.formatting.deserialize.deserialize_wrapped_key(
              wrapping_algorithm=self.config.wrapping_key.wrapping_algorithm,
              wrapping_key_id=self.key_id,
              wrapped_encrypted_key=encrypted_data_key,
          )
          # EncryptedData to raw key string
          plaintext_data_key = self.config.wrapping_key.decrypt(
              encrypted_wrapped_data_key=encrypted_wrapped_key, encryption_context=encryption_context
          )
          # Raw key string to DataKey
          return DataKey(
              key_provider=encrypted_data_key.key_provider,
              data_key=plaintext_data_key,
              encrypted_data_key=encrypted_data_key.encrypted_data_key,
          )