We want the result to represent the current change, regardless of what undo / redo was done earlier. Change the implementation to test for whether the current change is the last in the buffer, and if not, make a no-op change to get to an explicit change state.