def METHOD_NAME(
    self, table_refs: Collection[TableReference]
) -> Iterable[MetadataWorkUnit]:
    try:
        tables = self._filter_tables(table_refs)
        with ThreadPoolExecutor(max_workers=self.config.max_workers) as executor:
            futures = [executor.submit(self.process_table, ref) for ref in tables]
            for future in as_completed(futures):
                wu: Optional[MetadataWorkUnit] = future.result()
                if wu:
                    yield wu
    except Exception as e:
        self.report.report_warning("profiling", str(e))
        logger.warning(f"Unexpected error during profiling: {e}", exc_info=True)
        return