macro_rules! NextVariant {
(
@expand ($($pub_:tt)*) $name:ident ()
) => { ... };
(
@expand ($($pub_:tt)*) $name:ident ($($var_names:ident),*)
) => { ... };
(
@arms ($name:ident, $self_:expr), ($a:ident) -> ($($body:tt)*)
) => { ... };
(
@arms ($name:ident, $self_:expr), ($a:ident $b:ident $($rest:tt)*) -> ($($body:tt)*)
) => { ... };
(() pub enum $name:ident { $($body:tt)* }) => { ... };
(() enum $name:ident { $($body:tt)* }) => { ... };
}