# File lib/map.rb, line 872
  def Map._explode(key, value, accum = {:branches => [], :leaves => []})
    key = Array(key).flatten

    case value
      when Array
        accum[:branches].push([key, Array])

        value.each_with_index do |v, k|
          Map._explode(key + [k], v, accum)
        end

      when Hash
        accum[:branches].push([key, Map])

        value.each do |k, v|
          Map._explode(key + [k], v, accum)
        end

      else
        accum[:leaves].push([key, value])
    end

    accum
  end