anchor.diff:    }
   
     void paint(PaintingCanvas canvas, Offset offset) {
  +    defaultPaint(canvas, offset);
  +  }
  +
  +}
  +
  +class RenderBlock extends RenderBlockBase {
  +
  +  // sizes itself to the height of its child stack
  +
  +  RenderBlock({ List<RenderBox> children }) : super(children: children);
  +
  +  void performLayout() {
  +    super.performLayout();
  +    // FIXME(eseidel): Block lays out its children with unconstrained height
  +    // yet itself remains constrained. Remember that our children wanted to
  +    // be taller than we are so we know to clip them (and not cause confusing
  +    // mismatch of painting vs. hittesting).
  +    _hasVisualOverflow = childrenHeight > size.height;
  +    size = constraints.constrain(new Size(constraints.maxWidth, childrenHeight));
  +    assert(!size.isInfinite);
  +  }
  +
  +  void paint(PaintingCanvas canvas, Offset offset) {
       if (_hasVisualOverflow) {
         canvas.save();
         canvas.clipRect(offset & size);
       }
  -    defaultPaint(canvas, offset);
  +    super.paint(canvas, offset);
       if (_hasVisualOverflow) {
         canvas.restore();
       }
  
positive.code: 
  class BlockParentData extends BoxParentData with ContainerParentDataMixin<RenderBox> { }
  
  class RenderBlock extends RenderBox with ContainerRenderObjectMixin<RenderBox, BlockParentData>,
                                           RenderBoxContainerDefaultsMixin<RenderBox, BlockParentData> {
    // lays out RenderBox children in a vertical stack
    // uses the maximum width provided by the parent
    // sizes itself to the height of its child stack
  
    bool _hasVisualOverflow = false;
  
    RenderBlock({
      List<RenderBox> children
    }) {
      addAll(children);
  
negative.code:       y += child.size.height;
        child = child.parentData.nextSibling;
      }
      _childrenHeight = y;
    }
  
    void hitTestChildren(HitTestResult result, { Point position }) {
  