anchor.diff:  /// 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();
   
  
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: 
    List<Command<M>> get history => _history;
  
    /// Constructor
    ReversibleStore(InitialStateProvider<M> initialStateProvider)
        : super(initialStateProvider) {
      _history = [];
      initHistory(historyController.stream);
    }
  
    /// stock les commands ( sauf CancelCommand )
    void initHistory(Stream<C> hStream) {
      hStream.where((c) => !(c is CancelCommand)).listen((c) => history.add(c));
    }
  