pub fn claim_name(base: &str, taken: &mut HashSet<String>) -> StringExpand description
Take base if free, else the first base N that is, recording the claim.
Every name in the bank goes through here — including user-given and
preset ones. Letting those bypass collision detection while still
occupying the name is what allowed two bank rows to both read exactly
Glass Pad: Glass Pad is a preset name, and the generator is entitled to
produce it too.