   insertAt: (index, value) ->
     mark(@, value)
     Array.prototype.splice.call(@, index, 0, value)
+    @length = getLength(@)
     @trigger("insert", index, value)
     @trigger("change", @)
     value

    delete @[index] for index, _ of @ when isArrayIndex(index)
    @[index] = val for val, index in list
    mark(@, element) for element in list
    @trigger("update", list)
    @trigger("change", @)
    list

  reverse: ->
    Array.prototype.reverse.call(@)
    @trigger("update", @)
    @trigger("change", @)
    @
  forEach: (fun) ->
    if typeof(Array.prototype.forEach) is 'function'
