anchor.diff:  
     PaintingContext(this.canvas);
   
  -  List<RenderObject> _descendentsWithPaintingCanvases = new List<RenderObject>(); // used by RenderObject._updatePaintingCanvas() to find out which RenderObjects to ask to paint
     void paintChild(RenderObject child, Point point) {
  -    if (child.createNewDisplayList) {
  -      assert(!_descendentsWithPaintingCanvases.contains(child));
  -      _descendentsWithPaintingCanvases.add(child);
  -      canvas.drawPaintingNode(child._paintingNode, point);
  -    } else {
  -      child._paintWithContext(this, point.toOffset());
  -    }
  +    // TODO(abarth): Support compositing.
  +    assert(!child.requiresCompositing);
  +    child._paintWithContext(this, point.toOffset());
     }
   }
   
  
positive.code:     assert(!_needsPaint);
    }
  
    bool get createNewDisplayList => false;
    Rect get paintBounds;
    void debugPaint(PaintingContext context, Offset offset) { }
    void paint(PaintingContext context, Offset offset) { }
  
negative.code:       _nodesNeedingPaint = new List<RenderObject>();
        for (RenderObject node in dirtyNodes..sort((a, b) => a.depth - b.depth)) {
          if (node._needsPaint && node.attached)
            node._repaint();
        };
        assert(_nodesNeedingPaint.length == 0);
      } finally {
  