macro_rules! match_ast {
    (match $node:ident { $($tt:tt)* }) => { ... };
    (match ($node:expr) {
        $( ast::$ast:ident($it:pat) => $res:expr, )*
        _ => $catch_all:expr $(,)?
    }) => { ... };
}macro_rules! match_ast {
    (match $node:ident { $($tt:tt)* }) => { ... };
    (match ($node:expr) {
        $( ast::$ast:ident($it:pat) => $res:expr, )*
        _ => $catch_all:expr $(,)?
    }) => { ... };
}