pub fn translate_type_with<Id, T, U, F>( cache: &TypeCache<Id, U>, typ: &Type<Id, T>, translate: F) -> Uwhere T: Deref<Target = Type<Id, T>>, U: From<Type<Id, U>> + Clone, Id: Clone, F: FnMut(&T) -> U,