pub fn remove_aliases_cow<'t, T>(
    env: &(dyn TypeEnv<Type = T> + '_),
    interner: &mut impl TypeContext<Symbol, T>,
    typ: &'t T
) -> Cow<'t, T>
where T: TypeExt<Id = Symbol, SpannedId = Symbol> + Clone + Display, T::Types: Clone + Default + Extend<T> + FromIterator<T>, T::Generics: Clone + FromIterator<Generic<Symbol>>, T::Fields: Clone,