//! to rollback to the start of the snapshot or commit those changes.
/// Indicates where a snapshot started.
/// Indicates a snapshot that has been committed.
/// New variable with given index was created.
/// Variable with given index was changed *from* the given value.
// Snapshots are tokens that should be created/consumed linearly.
// Length of the undo log at the time the snapshot was taken.
/// Reserve space for new values, just like an ordinary vec.
// This is not affected by snapshots or anything.
/// a snapshot is active.
/// otherwise equivalent to -- invoking `set` for each element.
// This indicates a failure to obey the stack discipline.
// the inner is committed but outer is rolled back.
/// can still be undone if there is a snapshot further out.