# File lib/map.rb, line 947
  def rm(*args)
    paths, path = args.partition{|arg| arg.is_a?(Array)}
    paths.push(path)

    paths.each do |path|
      if path.size == 1
        delete(*path)
        next
      end

      branch, leaf = path[0..-2], path[-1]
      collection = get(branch)

      case collection
        when Hash
          key = leaf
          collection.delete(key)
        when Array
          index = leaf
          collection.delete_at(index)
        else
          raise(IndexError, "(#{ collection.inspect }).rm(#{ path.inspect })")
      end
    end
    paths
  end