anchor.diff:        history.fold(initialStateProvider().initial() as M,
                 (M newState, Command<M> c) => c.exec(newState));
   
  -  /// cancel last command if exists
  +  /// cancel last command if exists and if
     cancel() {
       if (history.isEmpty) return;
   
  
positive.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();
  
  
negative.code: 
    CancelCommand(this.prevValue);
  
    // command execution just return previous value
    @override
    T exec(T model) => prevValue;
  }
  