constructor (doc, actorId, applyPatch) {
    this.actorId = actorId
    this.nextOpNum = doc[STATE].maxOp + 1
    this.cache = doc[CACHE]
    this.updated = {}
    this.ops = []
    this.applyPatch = applyPatch ? applyPatch : interpretPatch
  }
An instance of this class is passed to `rootObjectProxy()`. The methods are
called by proxy object mutation functions to query the current object state
and to apply the requested changes.