macro_rules! phlow { ($var:expr) => { ... }; ($var:expr, <$($generic_type:ident),+>) => { ... }; (&$var:expr, $parent:expr) => { ... }; ($var:expr, $parent:expr) => { ... }; }