//! Declaration for an n-keyed set type, allowing access to each of its members by each of N different keys.
"A set of elements of type ", stringify!($V), " whose members can be accessed by multiple keys.",
#[doc = concat!("Return a reference to the element whose `", stringify!($key), "` is `key`.")]
self.[<$key _map>].get(key).map(|idx| self.values.get(*idx).expect("inconsistent state"))
#[doc = concat!("Return true if this set contains an element whose `", stringify!($key),
$vis fn [<remove_by_ $key>] <BorrowAsKey_>(&mut self, $key: &BorrowAsKey_) -> Option<$V>
let $key = $crate::n_key_set!( @access(removed, ($($($flag)+)?) $key : $KEY $({$($source)+})?) );
let [<orig_$key>] = $crate::n_key_set!( @access(value, ($($($flag)+)?) $key : $KEY $({$($source)+})?) )
let [<new_$key>] = $crate::n_key_set!( @access( value, ($($($flag)+)?) $key : $KEY $({$($source)+})?) ) ;
if let Some(k) = $crate::n_key_set!( @access(val, ($($($flag)+)?) $key : $KEY $({$($source)+})?) ) {