anchor.diff:  
     CancelCommand(this.prevValue);
   
  +  // command execution just return previous value
     @override
     T exec(T model) => prevValue;
   }
  
positive.code:       history.fold(initialStateProvider().initial() as M,
                (M newState, Command<M> c) => c.exec(newState));
  
    /// cancel last command if exists
    cancel() {
      if (history.isEmpty) return;
  
  
negative.code: /// Store with a commands backup, allowing to cancel commands
  class ReversibleStore<C extends Command<M>, M extends AbstractModel>
      extends Store<C, M> {
  
    /// model snapshot
    M get currentState => apply();
  
  