def merge(other_hash, &block)
      to_h.merge(other_hash, &block).reduce(self.class.new) do |map, pair|
        map[pair.first] = pair.last
        map
      end
    end
def merge(other_hash, &block)
      to_h.merge(other_hash, &block).reduce(self.class.new) do |map, pair|
        map[pair.first] = pair.last
        map
      end
    end
Returns a new struct containing the contents of `other` and the contents
 of `self`. If no block is specified, the value for entries with duplicate
 keys will be that of `other`. Otherwise the value for each duplicate key
 is determined by calling the block with the key, its value in `self` and
 its value in `other`.