class ReeObject::DeepDup
def dup_hash(hash, opts, cache)
def dup_hash(hash, opts, cache) dup = {} dup.default = recursively_dup(hash.default, opts, cache) dup.default_proc = hash.default_proc if hash.default_proc hash.each do |k, v| dup[recursively_dup(k, opts, cache)] = recursively_dup(v, opts, cache) end dup_singleton_methods(hash, dup) opts[:freeze] ? dup.freeze : dup end