macro_rules! make_parse {
(@parse $bitstream:ident; cond($cond:expr); default($def_expr:expr); ty($($spec:tt)*); ctx($ctx:expr)) => { ... };
(@parse $bitstream:ident; cond($cond:expr); ty($($spec:tt)*); ctx($ctx:expr)) => { ... };
(@parse $bitstream:ident; $(default($def_expr:expr);)? ty($($spec:tt)*); ctx($ctx:expr)) => { ... };
(@default; ; $ctx:expr) => { ... };
(@default; $def_expr:expr $(; $ctx:expr)?) => { ... };
(@select_ctx; $ctx_id:ident; $ctx:expr) => { ... };
(@select_ctx; $ctx_id:ident;) => { ... };
(@select_error_ty;) => { ... };
(@select_error_ty; $err:ty) => { ... };
($bundle_name:ident $(error($err:ty))? {
$($(#[$fieldattrs:meta])* $v:vis $field:ident: ty($($expr:tt)*) $(ctx($ctx_for_field:expr))? $(cond($cond:expr))? $(default($def_expr:expr))? ,)*
}) => { ... };
($bundle_name:ident ctx($ctx_id:ident : $ctx:ty) $(error($err:ty))? {
$($(#[$fieldattrs:meta])* $v:vis $field:ident: ty($($expr:tt)*) $(ctx($ctx_for_field:expr))? $(cond($cond:expr))? $(default($def_expr:expr))? ,)*
}) => { ... };
}