Ported HashWithIndifferentAccess from ActiveSupport