macro_rules! lifetime {
    (infer $b:expr) => { ... };
    (bound $d:tt $b:tt) => { ... };
    (bound $b:expr) => { ... };
    (placeholder $b:expr) => { ... };
    (expr $b:expr) => { ... };
    (($($b:tt)*)) => { ... };
}