anchor.diff:  
     void syncRenderObject(BlockViewport old) {
       super.syncRenderObject(old);
  -    if (_dirty)
  +    if (_dirty) {
         root.markNeedsLayout();
  +    } else {
  +      if (_currentChildCount > 0) {
  +        assert(_currentStartIndex >= 0);
  +        assert(builder != null);
  +        assert(root != null);
  +        int lastIndex = _currentStartIndex + _currentChildCount;
  +        for (int index = _currentStartIndex; index <= lastIndex; index += 1) {
  +          Widget widget = builder(index);
  +          assert(widget != null);
  +          assert(widget.key != null);
  +          _Key key = new _Key.fromWidget(widget);
  +          Widget oldWidget = _childrenByKey[key];
  +          assert(oldWidget != null);
  +          assert(oldWidget.root.parent == root);
  +          widget = syncChild(widget, oldWidget, root.childAfter(oldWidget.root));
  +          assert(widget != null);
  +          _childrenByKey[key] = widget;
  +        }
  +      }
  +    }
     }
   
     Widget _getWidget(int index, BoxConstraints innerConstraints) {
  
positive.code:   }
  
    void layout(BoxConstraints constraints) {
      _dirty = false;
  
      Map<_Key, Widget> newChildren = new Map<_Key, Widget>();
  
negative.code:   // end of the last one. If there's no children, then the only offset
    // is 0.0.
    List<double> _offsets = <double>[0.0];
    int _currentStartIndex = 0;
    int _currentChildCount = 0;
  
    int _findIndexForOffsetBeforeOrAt(double offset) {
      int left = 0;
  