macro_rules! impl_value_getter {
(
markers: $marker_n2e:ident / $singleton_n2e:ident $(, $marker_e2sn:ident / $singleton_e2sn:ident, $marker_e2ln:ident / $singleton_e2ln:ident)?;
impl $ty:ident {
$(#[$attr_n2e:meta])*
$vis_n2e:vis fn $name_n2e:ident() / $cname_n2e:ident();
$(
$(#[$attr_e2sn:meta])*
$vis_e2sn:vis fn $name_e2sn:ident() / $cname_e2sn:ident() -> $mapper_e2sn:ident / $mapper_e2snb:ident;
$(#[$attr_e2ln:meta])*
$vis_e2ln:vis fn $name_e2ln:ident() / $cname_e2ln:ident() -> $mapper_e2ln:ident / $mapper_e2lnb:ident;
)?
}
) => { ... };
}