anchor.diff:    final Array2d<SquareState> _states;
     final _updatedEvent = StreamController<void>();
     final _gameStateEvent = StreamController<GameState>();
  +  final _watch = Stopwatch();
   
     GameState _state;
     int _bombsLeft;
     int _revealsLeft;
  -  DateTime _startTime;
  -  DateTime _endTime;
   
     Game(this.field)
         : _state = GameState.reset,
  
positive.code: 
    bool get gameEnded => _state == GameState.won || _state == GameState.lost;
  
    Duration get duration {
      if (_startTime == null) {
        assert(state == GameState.reset);
        return null;
      } else {
        assert((state == GameState.started) == (_endTime == null));
        final end = (_endTime == null) ? DateTime.now() : _endTime;
        return end.difference(_startTime);
      }
    }
  
    bool canToggleFlag(int x, int y) {
      final currentSS = _states.get(x, y);
  
negative.code:   void _setState(GameState value) {
      assert(value != null);
      assert(_state != null);
      assert((_state == GameState.reset) == (!_watch.isRunning));
      if (_state != value) {
        _state = value;
        if (_state == GameState.started) {
          assert(!_watch.isRunning);
          _watch.reset();
          _watch.start();
        } else if (gameEnded) {
          assert(_watch.isRunning);
          _watch.stop();
        }
        _gameStateEvent.add(_state);
      }
  