macro_rules! base_box {
(box ($id:expr, $name:ident, $box:ident) $(data { $($data_name:ident: $data:ty),* $(,)* })? $(children { $($child_name:ident: $($child:ident)+),* $(,)*})?) => { ... };
(@type vec $child:ty) => { ... };
(@type $child:ty) => { ... };
(@id vec $child:ty) => { ... };
(@id $child:ty) => { ... };
(@read $child_name:expr, $header:ident, $reader:ident, vec $child:ty) => { ... };
(@read $child_name:expr, $header:ident, $reader:ident, $child:ty) => { ... };
}