def METHOD_NAME(self, obj: KubernetesObject, rule_count: int, rule: Dict[str, Any]) -> None:
    hosts = rule.get("hosts", [])
    split_mapping_specs: List[Dict[str, Any]] = []
    paths = rule.get("http", {}).get("paths", [])
    for path in paths:
        global_headers = path.get("appendHeaders", {})
        splits = path.get("splits", [])
        for split in splits:
            service_name = split.get("serviceName")
            if not service_name:
                continue
            service_namespace = split.get("serviceNamespace", obj.namespace)
            service_port = split.get("servicePort", 80)
            headers = split.get("appendHeaders", {})
            headers = {**global_headers, **headers}
            split_mapping_specs.append(
                {
                    "service": f"{service_name}.{service_namespace}:{service_port}",
                    "add_request_headers": headers,
                    "weight": split.get("percent", 100),
                    "prefix": path.get("path", "/"),
                    "timeout_ms": int(
                        durationpy.from_str(path.get("timeout", "15s")).total_seconds() * 1000
                    ),
                }
            )
    for split_count, (host, split_mapping_spec) in enumerate(
        itertools.product(hosts, split_mapping_specs)
    ):
        mapping_identifier = f"{obj.name}-{rule_count}-{split_count}"
        spec = {
            "ambassador_id": obj.ambassador_id,
            "host": host,
        }
        spec.update(split_mapping_spec)
        mapping = NormalizedResource.from_data(
            "Mapping",
            mapping_identifier,
            namespace=obj.namespace,
            generation=obj.generation,
            labels=obj.labels,
            spec=spec,
        )
        self.logger.debug(f"Generated Mapping from Knative {obj.kind}: {mapping}")
        self.manager.emit(mapping)