anchor.diff:      Map<int, Widget> builtChildren = new Map<int, Widget>();
   
       final List<double> offsets = layoutState._childOffsets;
  -    final Map<_Key, Widget> childrenByKey = layoutState._childrenByKey;
  +    final Map<_Key, Widget> childrenByKey = _childrenByKey;
       double extent;
       if (direction == ScrollDirection.vertical) {
         extent = constraints.maxHeight;
  
positive.code:   Object token;
    MixedViewportLayoutState layoutState;
  
    // 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() => new RenderBlockViewport();
  
    void walkChildren(WidgetTreeWalker walker) {
      for (Widget child in layoutState._childrenByKey.values)
        walker(child);
    }
  
  
negative.code:     _readOnlyChildOffsets = new UnmodifiableListView<double>(_childOffsets);
    }
  
    bool _dirty = true;
  
    int _firstVisibleChildIndex;
  