macro_rules! record_expr {
    ($name:ident, {$($body:tt)*}) => { ... };
    (@wrapper $var:ident, $name:ident, $($body:tt)*) => { ... };
    (@record_expr $result:ident, $params:ident, $var:ident, $name:ident, $field:ident : $e:expr $(,)?) => { ... };
    (@record_expr $result:ident, $params:ident, $var:ident, $name:ident, $field:ident : $e:expr, $($tails:tt)*) => { ... };
}