pub fn define_type<'a, T>(generator: &mut T, name: &str, id: TypeId)where T: InterfaceGenerator<'a> + ?Sized,