finishUndoableChange () {
    const p = this.undoChangeStackPointer--
    const changeset = this.undoableChangeStack[p]
    const { attrName } = changeset
    const batchCmd = new BatchCommand('Change ' + attrName)
    let i = changeset.elements.length
    while (i--) {
      const elem = changeset.elements[i]
      if (!elem) { continue }
      const changes = {}
      changes[attrName] = changeset.oldValues[i]
      if (changes[attrName] !== elem.getAttribute(attrName)) {
        batchCmd.addSubCommand(new ChangeElementCommand(elem, changes, attrName))
      }
    }
    this.undoableChangeStack[p] = null
    return batchCmd
  }
This function returns a `BatchCommand` object which summarizes the
change since `beginUndoableChange` was called.  The command can then
be added to the command history.
@returns {BatchCommand} Batch command object with resulting changes