macro_rules! header {
($(#[$a : meta]) * ($id : ident, $name : expr) => ($item : ty) *) => { ... };
($(#[$a : meta]) * ($id : ident, $name : expr) => ($item : ty) +) => { ... };
($(#[$a : meta]) * ($id : ident, $name : expr) => [$value : ty]) => { ... };
($(#[$a : meta]) * ($id : ident, $name : expr) => { Any / ($item : ty) + }) => { ... };
($(#[$a : meta]) * ($id : ident, $name : expr) => ($item : ty) * $tm : ident
{ $($tf : item) * }) => { ... };
($(#[$a : meta]) * ($id : ident, $n : expr) => ($item : ty) + $tm : ident
{ $($tf : item) * }) => { ... };
($(#[$a : meta]) * ($id : ident, $name : expr) => [$item : ty] $tm : ident
{ $($tf : item) * }) => { ... };
($(#[$a : meta]) * ($id : ident, $name : expr) => { Any / ($item : ty) + } $tm
: ident { $($tf : item) * }) => { ... };
}