anchor.diff:      assert(!_needsPaint);
     }
   
  -  bool get createNewDisplayList => false;
  +  bool get requiresCompositing => false;
     Rect get paintBounds;
     void debugPaint(PaintingContext context, Offset offset) { }
     void paint(PaintingContext context, Offset offset) { }
  
positive.code:     try {
        _paintWithContext(context, Offset.zero);
      } catch (e) {
        print('Exception raised during _updatePaintingCanvas:\n${e}\nContext:\n${this}');
        if (inDebugBuild)
          rethrow;
        return;
      }
      assert(!_needsLayout); // check that the paint() method didn't mark us dirty again
      assert(!_needsPaint); // check that the paint() method didn't mark us dirty again
      _paintingNode.setBackingDrawable(recorder.endRecordingAsDrawable());
      if (context._descendentsWithPaintingCanvases != null) {
        for (RenderObject node in context._descendentsWithPaintingCanvases) {
          assert(node.attached == attached);
          if (node._needsPaint)
            node._updatePaintingCanvas();
        };
      }
    }
  
    void _paintWithContext(PaintingContext context, Offset offset) {
  
negative.code:     assert(!debugDoingPaint);
      if (!attached) return; // Don't try painting things that aren't in the hierarchy
      if (_needsPaint) return;
      if (requiresCompositing) {
        _needsPaint = true;
        _nodesNeedingPaint.add(this);
        scheduler.ensureVisualUpdate();
  