anchor.diff:  
   class DirtyCheckingChangeDetector<H> extends DirtyCheckingChangeDetectorGroup<H>
       implements ChangeDetector<H> {
  +
  +  final DirtyCheckingRecord _fakeHead = new DirtyCheckingRecord.marker();
  +
     DirtyCheckingChangeDetector(GetterCache getterCache): super(null, getterCache);
   
     DirtyCheckingChangeDetector get _root => this;
  
positive.code:     return true;
    }
  
    Iterator<Record<H>> collectChanges({ EvalExceptionHandler exceptionHandler,
                                            AvgStopwatch stopwatch}) {
      if (stopwatch != null) stopwatch.start();
      DirtyCheckingRecord changeHead = null;
      DirtyCheckingRecord changeTail = null;
      DirtyCheckingRecord current = _recordHead; // current index
  
      int count = 0;
      while (current != null) {
        try {
          if (current.check()) {
            if (changeHead == null) {
              changeHead = changeTail = current;
            } else {
              changeTail = changeTail._nextChange = current;
            }
          }
          if (stopwatch != null) count++;
        } catch (e, s) {
          if (exceptionHandler == null) {
            rethrow;
  
negative.code:       }
        current = current._nextRecord;
      }
  
      changeTail._nextChange = null;
      if (stopwatch != null) stopwatch..stop()..increment(count);
      DirtyCheckingRecord changeHead = _fakeHead._nextChange;
      _fakeHead._nextChange = null;
  
      return new _ChangeIterator(changeHead);
    }
  
  