anchor.diff:        return null;
       assert(widget.key != null); // items in lists must have keys
       final _Key key = new _Key.fromWidget(widget);
  -    Widget oldWidget = layoutState._childrenByKey[key];
  +    Widget oldWidget = _childrenByKey[key];
       widget = syncChild(widget, oldWidget, _omit);
       if (index >= offsets.length - 1) {
         assert(index == offsets.length - 1);
  
positive.code:       return false;
      });
      return null;
    }
  
    void didMount() {
      renderObject.callback = layout;
      renderObject.totalExtentCallback = _noIntrinsicDimensions;
      renderObject.maxCrossAxisDimensionCallback = _noIntrinsicDimensions;
      renderObject.minCrossAxisDimensionCallback = _noIntrinsicDimensions;
      super.didMount();
    }
  
    void didUnmount() {
      renderObject.callback = null;
      renderObject.totalExtentCallback = null;
      renderObject.maxCrossAxisDimensionCallback = null;
      renderObject.minCrossAxisDimensionCallback = null;
      super.didUnmount();
    }
  
    int _findIndexForOffsetBeforeOrAt(double offset) {
  
negative.code:   Object token;
    MixedViewportLayoutState layoutState;
  
    Map<_Key, Widget> _childrenByKey = new Map<_Key, Widget>();
  
    // we don't pass the direction or offset to the render object when we create it, because
    // the render object is empty so it will not matter
    RenderBlockViewport get renderObject => super.renderObject;
  
    RenderBlockViewport createNode() {
      RenderBlockViewport result = new RenderBlockViewport();
      result.callback = layout;
      result.totalExtentCallback = _noIntrinsicDimensions;
      result.maxCrossAxisDimensionCallback = _noIntrinsicDimensions;
      result.minCrossAxisDimensionCallback = _noIntrinsicDimensions;
      return result;
    }
  
    void remove() {
      renderObject.callback = null;
      renderObject.totalExtentCallback = null;
      renderObject.maxCrossAxisDimensionCallback = null;
      renderObject.minCrossAxisDimensionCallback = null;
      super.remove();
      _childrenByKey.clear();
      layoutState._dirty = true;
    }
  
    void walkChildren(WidgetTreeWalker walker) {
      for (Widget child in _childrenByKey.values)
        walker(child);
    }
  
  