macro_rules! p {
    (@$lit:literal) => { ... };
    (@write($($data:expr),+)) => { ... };
    (@print($x:expr)) => { ... };
    (@$method:ident($($arg:expr),*)) => { ... };
    ($($elem:tt $(($($args:tt)*))?),+) => { ... };
}