def deep_copy_hash hash
      require_that(hash.is_a?(Hash), "deep_copy_hash requires a hash be specified, got #{hash.class}")
      Marshal.load Marshal.dump(hash)
    end
def deep_copy_hash hash
      require_that(hash.is_a?(Hash), "deep_copy_hash requires a hash be specified, got #{hash.class}")
      Marshal.load Marshal.dump(hash)
    end
Create a deep copy of a hash

 This is useful for copying a hash that will be mutated
 @note All keys and values must be serializable, Proc for instance will fail
 @param [Hash] hash the hash to copy
 @return [Hash]