fn match_path(parts: &[Part], path: &str, names: &mut Vec<String>) -> bool
Match a pattern against a display path, shortest wildcard names first, and collect the instance names in wildcard order.