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