macro_rules! context {
(mod $(< $( $lt:tt $( : $clt:tt $(+ $dlt:tt )* )? ),+ $(,)?>)? $name:ident {
$($field:ident $(($field_mut:ident))? : $ref_mut:tt $type_:ty ),*
$(,)?
}) => { ... };
(@impl $c:ident [$($i:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*} {$({$($p:tt)*})*} {$({$($a:tt)*})*} {$({$($b:tt)*})*} {}) => { ... };
(@impl $c:ident [$($i:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*} {$({$($p:tt)*})*} {$({$($a:tt)*})*} {$({$($b:tt)*})*}
{$field:ident : ref $type_:ty $(, $ft:ident $(($fm:ident))? : $rt:tt $t:ty)*}) => { ... };
(@impl $c:ident [$($i:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*} {$({$($p:tt)*})*} {$({$($a:tt)*})*} {$({$($b:tt)*})*}
{$field:ident ($field_mut:ident) : mut $type_:ty $(, $ft:ident $(($fm:ident))? : $rt:tt $t:ty)*}) => { ... };
(@impl $c:ident [$($i:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*} {$({$($p:tt)*})*} {$({$($a:tt)*})*} {$({$($b:tt)*})*}
{$field:ident : const $type_:ty $(, $ft:ident $(($fm:ident))? : $rt:tt $t:ty)*}) => { ... };
}