macro_rules! contextual {
{$($visibility:vis $interface_name:ident($context_name:ident) : $data_type:ty = $initial_value:expr;)+} => { ... };
($visibility:vis $interface_name:ident($context_name:ident) : $data_type:ty = $initial_value:expr) => { ... };
}