Tweak HMap printing to elide :mandatory if possible
Refactor out HMap upcast logic
All tests pass