def METHOD_NAME(
    self,
    source: TestReport,
    export_context: ExportContext,
    tag_dicts: List[Dict],
    filter_type: str,
) -> None:
    """
    Creates clones of the report using the given tag & filter
    context, initialize a new exporter for each clone and run the export
    operation, if the clone report is not empty.
    :param source: Testplan report
    :param export_context:
    :param tag_dicts: list of tag dictionaries, export is run for each item
    :param filter_type: all / any
    """
    if filter_type not in [self.ALL, self.ANY]:
        raise ValueError("Invalid filter type: {}".format(filter_type))
    for tag_dict in tag_dicts:
        clone = self.get_filtered_source(source, tag_dict, filter_type)
        if clone is not None:
            params = self.get_params(tag_dict, filter_type)
            exporter = self.get_exporter(**params)
            run_exporter(
                exporter=exporter,
                source=clone,
                export_context=export_context,
            )
        else:
            TESTPLAN_LOGGER.user_info(
                self.get_skip_message(
                    source=clone,
                    tag_dict=tag_dict,
                    filter_type=filter_type,
                )
            )