code: function appendInternal(that, propertyList, args, options) {
      var arrayToAppend = args[0]
      if(arrayToAppend.length === 0) return; //nothing to do
  
      var array = getPropertyValue(that.subject, propertyList)
      var originalLength = array.length
  
      var spliceArgs = [originalLength, 0]
      spliceArgs = spliceArgs.concat(arrayToAppend)
      var oldLength = array.length
      array.splice.apply(array, spliceArgs)
  
      var internalObservees = unionizeList(array, oldLength, array.length, options.union)
  
      var event = {type: 'added', property: propertyList, index: originalLength, count: arrayToAppend.length}
      if(options.data !== undefined) event.data = event.id = options.data
      that.emit('change', event)
  
      unionizeListEvents(that, internalObservees, propertyList, options.union)
  }
docs: note: I'm not using splice to do this as an optimization (because otherwise the property list would have to be parsed twice and the value gotten twice) - maybe this optimization wasn't worth it but its already done