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