# 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