pub fn walk_type_mut<Id, T, F>(typ: &mut T, f: &mut F)
where F: WalkerMut<T> + ?Sized, T: TypePtr<Id = Id> + DerefMut<Target = Type<Id, T>>, T::Types: DerefMut<Target = [T]>, T::Fields: DerefMut<Target = [Field<T::SpannedId, T>]>, T::TypeFields: DerefMut<Target = [Field<T::SpannedId, Alias<Id, T>>]>,