macro_rules! flat_combine {
(<$t:ty> $idx:expr $(,)?) => { ... };
(<$t:ty> $idx:expr, <$e:expr, $le:ident, $re:ident> $(, $($tt:tt)*)?) => { ... };
(<$t:ty> $idx:expr, $e:expr $(, $($tt:tt)*)?) => { ... };
}macro_rules! flat_combine {
(<$t:ty> $idx:expr $(,)?) => { ... };
(<$t:ty> $idx:expr, <$e:expr, $le:ident, $re:ident> $(, $($tt:tt)*)?) => { ... };
(<$t:ty> $idx:expr, $e:expr $(, $($tt:tt)*)?) => { ... };
}