docs: def decrypt_batch_get_item(decrypt_method, crypto_config_method, read_method, **kwargs):
      # type: (Callable, Callable, Callable, **Any) -> Dict
      # TODO: narrow this down
      """Transparently decrypt multiple items after getting them in a batch request.
  
      :param callable decrypt_method: Method to use to decrypt items
      :param callable crypto_config_method: Method that accepts ``kwargs`` and provides a :class:`CryptoConfig`
      :param callable read_method: Method that reads from the table
      :param **kwargs: Keyword arguments to pass to ``read_method``
      :return: DynamoDB response
      :rtype: dict
      """
      request_crypto_config = kwargs.pop("crypto_config", None)
  
      for _table_name, table_kwargs in kwargs["RequestItems"].items():
          validate_get_arguments(table_kwargs)
  
      response = read_method(**kwargs)
      for table_name, items in response["Responses"].items():
          if request_crypto_config is not None:
              crypto_config = request_crypto_config
          else:
              crypto_config = crypto_config_method(table_name=table_name)
  
          for pos, value in enumerate(items):
              items[pos] = decrypt_method(
                  item=value, crypto_config=crypto_config.with_item(_item_transformer(decrypt_method)(items[pos]))
              )
      return response