pub fn generalize( arena: *mut TypeArena, builtin_types: *mut BuiltinTypes, scope: *mut Scope, cached_types: *mut DenseHashSet<TypeId>, ty: TypeId, generalization_target: Option<TypeId>, ) -> Option<TypeId>