# File lib/map.rb, line 827 def set(*args) case when args.empty? return [] when args.size == 1 && args.first.is_a?(Hash) hash = args.shift else hash = {} value = args.pop key = Array(args).flatten hash[key] = value end strategy = hash.map{|skey, svalue| [Array(skey), svalue]} strategy.each do |skey, svalue| leaf_for(skey, :autovivify => true) do |leaf, k| Map.collection_set(leaf, k, svalue) end end self end