# File lib/map.rb, line 797 def Map.collection_set(collection, key, value, &block) set_key = false case collection when Array begin key = Integer(key) rescue raise(IndexError, "(#{ collection.inspect })[#{ key.inspect }]=#{ value.inspect }") end set_key = true collection[key] = value when Hash set_key = true collection[key] = value else raise(IndexError, "(#{ collection.inspect })[#{ key.inspect }]=#{ value.inspect }") end block.call(key) if(set_key and block) [key, value] end