macro_rules! downcast {
($a:expr, dyn Global, $t:ty) => { ... };
($a:expr, Arc<$(RwLock<)?dyn GameObject$(>)+, Arc<$t:ty>) => { ... };
($a:expr, Arc<$(RwLock<)?dyn Camera$(>)?>, Arc<$t:ty>) => { ... };
($a:expr, Arc<$(RwLock<)?dyn Light$(>)?>, Arc<$t:ty>) => { ... };
($a:expr, Arc<$(RwLock<)?dyn Any$(>)?>, Arc<$t:ty>) => { ... };
}