void undoInsertAt(long rowIndex) throws DriverException {
    deleteInIndex((int) rowIndex);
    rowsAddresses.remove((int) rowIndex);
    editionActions.remove((int) rowIndex);
    cachedScope = null;

    editionListenerSupport.callDeleteRow(rowIndex, true);
  }
  DeleteCommandInfo doDeleteRow(long rowId) throws DriverException {
    dirty = true;
    deleteInIndex((int) rowId);
    PhysicalRowAddress dir = rowsAddresses.remove((int) rowId);
    EditionInfo ei = editionActions.get((int) rowId);
    DeleteEditionInfo dei = null;
    if (ei instanceof OriginalEditionInfo) {
      dei = new DeleteEditionInfo(((OriginalEditionInfo) ei).getPK());
      deletedPKs.add(dei);
    }
    editionActions.remove((int) rowId);
    cachedScope = null;

    editionListenerSupport.callDeleteRow(rowId, undoRedo);

    return new DeleteCommand.DeleteCommandInfo(dir, rowId, dei, ei);
  }