TODO: moving this two a class method on HashWithIndifferentAccess would really make the most sense, but there are two blockers:
- historically the method has operated out of Util. While totally ok, simply dedeferring to HashWithIndifferentAccess feels a bit awkward
- the contracts gem doesn’t support class method at this time. the assurance of frozen output is important considering the uses of the recursively_enhance method