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>) => { ... };
}