macro_rules! library {
($(extern crate $n:ident { $($tt:tt)* })*) => { ... };
(@mod $n:ident { $($tt:tt)* }) => { ... };
(@type $n:ident) => { ... };
(@impl $n:ident { fn $f:ident($($args:tt)*) $($rest:tt)* }) => { ... };
(@impl $n:ident {}) => { ... };
(@fn_args $n:ident { fn ($(($($arg:tt)*))*) $f:ident() -> $($rest:tt)* }) => { ... };
(@fn_args $n:ident { fn ($(($($arg:tt)*))*) $f:ident() ; $($rest:tt)* }) => { ... };
(@fn_args $n:ident { fn ($(($($arg:tt)*))*) $f:ident($($args:tt)*) $($rest:tt)* }) => { ... };
(@fn_arg ($($ty:tt)*) (, $($more:tt)*) $n:ident { fn ($(($($arg:tt)*))*) $f:ident $($rest:tt)* }) => { ... };
(@fn_arg ($($ty:tt)*) () $n:ident { fn ($(($($arg:tt)*))*) $f:ident $($rest:tt)* }) => { ... };
(@fn_ret ($($ty:tt)*) (; $($rest:tt)*) $n:ident { fn ($(($($arg:tt)*))*) $f:ident }) => { ... };
(@fn_recv $n:ident $f:ident ((v self) $(($($arg:tt)*))*) ($($ret:tt)*)) => { ... };
(@fn_recv $n:ident $f:ident ((v &self) $(($($arg:tt)*))*) ($($ret:tt)*)) => { ... };
(@fn_recv $n:ident $f:ident ((v &mut self) $(($($arg:tt)*))*) ($($ret:tt)*)) => { ... };
(@fn_recv $n:ident $f:ident ($(($($arg:tt)*))*) ($($ret:tt)*)) => { ... };
(@fn $n:ident $f:ident ($($v:ident $recv:ident)*) ($(($w:ident $($arg:tt)*))*) ($($ret:tt)*)) => { ... };
(@to_runtime_type $n:ident) => { ... };
(@to_runtime_type &mut $($rest:tt)*) => { ... };
(@to_runtime_type & $($rest:tt)*) => { ... };
(@to_runtime_type ()) => { ... };
(@to_runtime_type $($rest:tt)*) => { ... };
(@parse_type (@$tag:ident $($then:tt)*) () $($rest:tt)*) => { ... };
(@parse_type (@$tag:ident $($then:tt)*) $t:ident $($rest:tt)*) => { ... };
(@parse_type (@$tag:ident $($then:tt)*) &mut $($rest:tt)*) => { ... };
(@parse_type_mut ($($ty:tt)*) ($($rest:tt)*) @$tag:ident $($then:tt)*) => { ... };
(@parse_type (@$tag:ident $($then:tt)*) & $($rest:tt)*) => { ... };
(@parse_type_ref ($($ty:tt)*) ($($rest:tt)*) @$tag:ident $($then:tt)*) => { ... };
(@parse_type (@$tag:ident $($then:tt)*) $other:tt $($input:tt)*) => { ... };
(@parse mod $n:ident { $($tt:tt)* } $($rest:tt)*) => { ... };
(@parse type $n:ident; $($rest:tt)*) => { ... };
(@parse impl $n:ident { $($tt:tt)* } $($rest:tt)*) => { ... };
(@parse trait $n:ident { $($tt:tt)* } $($rest:tt)*) => { ... };
(@parse) => { ... };
}