<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_firmware_manifest(self, name, datafile, key_table_file=None, **kwargs):
 """Add a new manifest reference. :param str name: Manifest file short name (Required) :param str datafile: The file object or path to the manifest file (Required) :param str key_table_file: The file object or path to the key_table file (Optional) :param str description: Manifest file description :return: the newly created manifest file object :rtype: FirmwareManifest """

        kwargs.update({
            'name': name,
            'url': datafile,  # really it's the datafile
        })
        if key_table_file is not None:
            kwargs.update({'key_table_url': key_table_file})  # really it's the key_table
        firmware_manifest = FirmwareManifest._create_request_map(kwargs)
        api = self._get_api(update_service.DefaultApi)
        return FirmwareManifest(
            api.firmware_manifest_create(**firmware_manifest)
        )