macro_rules! EnumTypeFoldableImpl {
(impl < $($p : tt), * > TypeFoldable < $tcx : tt > for $s : path
{ $($variants : tt) * } $(where $($wc : tt) *) *) => { ... };
(@ FoldVariants($this : expr, $folder : expr) input()
output($($output : tt) *)) => { ... };
(@ FoldVariants($this : expr, $folder : expr)
input(($variant : path) ($($variant_arg : ident), *), $($input : tt) *)
output($($output : tt) *)) => { ... };
(@ FoldVariants($this : expr, $folder : expr)
input(($variant : path) { $($variant_arg : ident), * $(,) ? }, $($input : tt)
*) output($($output : tt) *)) => { ... };
(@ FoldVariants($this : expr, $folder : expr)
input(($variant : path), $($input : tt) *) output($($output : tt) *)) => { ... };
(@ VisitVariants($this : expr, $visitor : expr) input()
output($($output : tt) *)) => { ... };
(@ VisitVariants($this : expr, $visitor : expr)
input(($variant : path) ($($variant_arg : ident), *), $($input : tt) *)
output($($output : tt) *)) => { ... };
(@ VisitVariants($this : expr, $visitor : expr)
input(($variant : path) { $($variant_arg : ident), * $(,) ? }, $($input : tt)
*) output($($output : tt) *)) => { ... };
(@ VisitVariants($this : expr, $visitor : expr)
input(($variant : path), $($input : tt) *) output($($output : tt) *)) => { ... };
}