macro_rules! oma {
($head:expr,[$({$($tt:tt)*}),+]) => { ... };
($head:expr,[$($i:ident),+]) => { ... };
($head:pat,$args:pat) => { ... };
($head:expr,I@$($args:tt)*) => { ... };
(@ARGSITER $mode:ident:$args:expr) => { ... };
(@ARGSPAT $mode:ident:$p:pat) => { ... };
(@ARGS $mode:ident:$a:expr) => { ... };
(@MODE N) => { ... };
}