if_all_same(codes.values().cloned()).unwrap_or_default() was quite unreadable because it wasn't obvious that codes.values() are the prefixes. It's better to introduce another Map rather than having Maps within Maps.
This PR introduces a new `crates` directory and moves all "product" crates into that folder. Part of #2059.