macro_rules! delegate_touch {
($(@<$( $lt:tt $( : $clt:tt $(+ $dlt:tt )* )? ),+>)? $ty: ty) => { ... };
($(@<$( $lt:tt $( : $clt:tt $(+ $dlt:tt )* )? ),+>)? $ty: ty, touch: [$($td:ty),* $(,)?]) => { ... };
(@{$($ty:tt)*}; touch: $td:ty) => { ... };
(@$ty:tt; [$($td:ty),*] ) => { ... };
}