macro_rules! pattern {
($pipeline:ident, $src_id:expr) => { ... };
($pipeline:ident, $type:ident, $src_id:expr) => { ... };
($pipeline:ident, $supertype:ident, $subtype:ident, $src_id:expr) => { ... };
($pipeline:ident, $supertype:ident, $subtype:ident, $scatter:ident, $dir:ident, $src_id:expr) => { ... };
([ $($spec:tt),* $(,)? ]) => { ... };
}