macro_rules! map {
{{$($tt:tt)*}} => { ... };
(@field $map:expr, $field:ident $(, $($remain:tt)* )?) => { ... };
(@field $map:expr, $field:ident: Map {$($tt:tt)*} $(, $($remain:tt)* )?) => { ... };
(@field $map:expr, $field:ident: $struct:ty {$($tt:tt)*} $(, $($remain:tt)* )?) => { ... };
(@field $map:expr, $field:ident: $value:expr $(, $($remain:tt)* )?) => { ... };
(@field $map:expr $(,)?) => { ... };
}