fn substitute_all(
    custom_properties_map: &mut CustomPropertiesMap,
    inherited: Option<&CustomPropertiesMap>,
    seen: &PrecomputedHashSet<&Name>,
    device: &Device
)
Expand description

Resolve all custom properties to either substituted, invalid, or unset (meaning we should use the inherited value).

It does cycle dependencies removal at the same time as substitution.