This action allows making multiple-action bindings into an atomic operation that will be undone by a single Undo command. For example, to optimize rat lines, you'd delete the rats and re-add them. To group these into a single undo, you'd want the deletions and the additions to have the same undo serial number. So, you Save, delete the rats, Restore, add the rats - using the same serial number as the deletes, then Block, which checks to see if the deletions or additions actually did anything. If not, the serial number is set to the saved number, as there's nothing to undo. If something did happen, the serial number is incremented so that these actions are counted as a single undo step.

An alternative mechanism is freeze/unfreeze for the case restoring between every two actions is not possible or not practical. The sequence is Save, Freeze, call actions, UnFreeze, Block.

Arguments:

Save Saves the undo serial number.
Restore Returns it to the last saved number.
Close Sets it to 1 greater than the last save.
Block Does a Restore if there was nothing to undo, else does a Close.
Freeze Make sure no subsequent actions will bump the undo serial
UnFreeze or Thaw Allow subsequent actions to bump the undo serial again