class Psych::Visitors::ToRuby

def revive_hash hash, o, tagged= false

def revive_hash hash, o, tagged= false
  o.children.each_slice(2) { |k,v|
    key = accept(k)
    val = accept(v)
    if key == '<<' && k.tag != "tag:yaml.org,2002:str"
      case v
      when Nodes::Alias, Nodes::Mapping
        begin
          hash.merge! val
        rescue TypeError
          hash[key] = val
        end
      when Nodes::Sequence
        begin
          h = {}
          val.reverse_each do |value|
            h.merge! value
          end
          hash.merge! h
        rescue TypeError
          hash[key] = val
        end
      else
        hash[key] = val
      end
    else
      if !tagged && @symbolize_names && key.is_a?(String)
        key = key.to_sym
      elsif !@freeze
        key = deduplicate(key)
      end
      hash[key] = val
    end
  }
  hash
end