class ActiveSupport::HashWithIndifferentAccess

def merge(*hashes, &block)

access with the result of the merge.
modify the receiver but rather returns a new hash with indifferent
This method has the same semantics of +update+, except it does not
def merge(*hashes, &block)
  dup.update(*hashes, &block)
end