macro_rules! fold {
(@parse [zip!($($iae:expr),* $(,)?), $init:expr, |$acc:pat_param, ($($iip:pat_param),* $(,)?)| $($body:tt)*] $($cb:tt)*) => { ... };
(@parse [$iae:expr, $init:expr, |$acc:pat_param, $iip:pat_param| $($body:tt)*] $($cb:tt)*) => { ... };
(@parse [$iae:expr, $init:expr, $fn:expr] $($cb:tt)*) => { ... };
(@expand [$init:expr] [$body:expr] [$acc:pat_param] [$(($iae:expr, $iip:pat_param, $ia:ident))+]) => { ... };
($($fold_args:tt)*) => { ... };
}