macro_rules! h {
(comp $t:ty, { $( $k:ident => $v:expr ),* } $(,)*) => { ... };
(comp $t:ty) => { ... };
(vec $n:expr) => { ... };
({ $( $k:expr => $v:expr ),* $(,)* }) => { ... };
([ $( $v:expr ),* $(,)* ]) => { ... };
($n:expr) => { ... };
($n:expr, _ $(,)*) => { ... };
($n:expr, { $($k:expr => $v:expr),* $(,)* } $(,)*) => { ... };
($n:expr, [ $( $ev:expr ),* $(,)* ] $(,)*) => { ... };
($n:expr, { $($k:expr => $v:expr),* $(,)* }, [ $( $ev:expr ),* $(,)* ] $(,)*) => { ... };
($n:expr, { $($k:expr => $v:expr),* $(,)* }, [ $( $ev:expr ),* $(,)* ], $( $o:expr ),* $(,)*) => { ... };
($n:expr, { $($k:expr => $v:expr),* $(,)* }, $( $o:expr ),* $(,)*) => { ... };
($n:expr, [ $( $ev:expr ),* $(,)* ], $( $m:expr ),* $(,)*) => { ... };
($n:expr, $s:expr, [ $( $ev:expr ),* $(,)* ], $( $m:expr ),* $(,)*) => { ... };
($n:expr, $( $m:expr ),* $(,)*) => { ... };
}