clone() {
    if (!this.haveHashGraph) this.computeHashGraph()
    let copy = new BackendDoc()
    copy.maxOp = this.maxOp
    copy.haveHashGraph = this.haveHashGraph
    copy.changes = this.changes.slice()
    copy.changeIndexByHash = copyObject(this.changeIndexByHash)
    copy.dependenciesByHash = copyObject(this.dependenciesByHash)
    copy.dependentsByHash = Object.entries(this.dependentsByHash).reduce((acc, [k, v]) => { acc[k] = v.slice(); return acc }, {})
    copy.hashesByActor = Object.entries(this.hashesByActor).reduce((acc, [k, v]) => { acc[k] = v.slice(); return acc }, {})
    copy.actorIds = this.actorIds // immutable, no copying needed
    copy.heads = this.heads // immutable, no copying needed
    copy.clock = this.clock // immutable, no copying needed
    copy.blocks = this.blocks // immutable, no copying needed
    copy.objectMeta = this.objectMeta // immutable, no copying needed
    copy.queue = this.queue // immutable, no copying needed
    return copy
  }
Makes a copy of this BackendDoc that can be independently modified.