macro_rules! closure_rec {
($me:ident.state=$state_val:expr => || $body:expr) => { ... };
($me:ident.state=$state_val:expr => |$arg:pat| $body:expr) => { ... };
($me:ident.state=$state_val:expr => |$arg1:pat,$($arg2:pat),+| $body:expr) => { ... };
(mut $me:ident.state=$state_val:expr => || $body:expr) => { ... };
(mut $me:ident.state=$state_val:expr => |$arg:pat| $body:expr) => { ... };
(mut $me:ident.state=$state_val:expr => |$arg1:pat,$($arg2:pat),+| $body:expr) => { ... };
(mut $me:ident.state=$state_val:expr => mut || $body:expr) => { ... };
(mut $me:ident.state=$state_val:expr => mut |$arg:pat| $body:expr) => { ... };
(mut $me:ident.state=$state_val:expr => mut |$arg1:pat,$($arg2:pat),+| $body:expr) => { ... };
($me:ident.state=$state_val:expr => mut || $body:expr) => { ... };
($me:ident.state=$state_val:expr => mut |$arg:pat| $body:expr) => { ... };
($me:ident.state=$state_val:expr => mut |$arg1:pat,$($arg2:pat),+| $body:expr) => { ... };
($me:ident.state=$state_val:expr => ref || $body:expr) => { ... };
($me:ident.state=$state_val:expr => ref |$arg:pat| $body:expr) => { ... };
($me:ident.state=$state_val:expr => ref |$arg1:pat,$($arg2:pat),+| $body:expr) => { ... };
}