macro_rules! impl_tuple_collect {
    () => { ... };
    ($N:expr; $A:ident ; $($X:ident),* ; $($Y:ident),* ; $($Y_rev:ident),*) => { ... };
}