macro_rules! delegate_subcompositor { ($(@<$( $lt:tt $( : $clt:tt $(+ $dlt:tt )* )? ),+>)? $ty: ty) => { ... }; ($(@<$( $lt:tt $( : $clt:tt $(+ $dlt:tt )* )? ),+>)? $ty: ty, subsurface: [$($subsurface: ty),*$(,)?]) => { ... }; (@{$($ty:tt)*}; subsurface: []) => { ... }; (@{$($ty:tt)*}; subsurface-only: $subsurface:ty) => { ... }; (@$ty:tt; subsurface: [ $($subsurface:ty),+ ]) => { ... }; }