update (path, diff) {
    var diffOp = this._getDiffOp(path, diff)
    var op = ObjectOperation.Update(path, diffOp)
    this.apply(op)
    return op
  }
Update a property incrementally.

    The diff can be of the following forms (depending on the updated property type):
      - String:
        - `{ insert: { offset: Number, value: Object } }`
        - `{ delete: { start: Number, end: Number } }`
      - Array:
        - `{ insert: { offset: Number, value: Object } }`
        - `{ delete: { offset: Number } }`

    @param {array} path
    @param {object} diff
    @returns {ObjectOperation} The applied operation.