anchor.diff:      assert(!debugDoingPaint);
       if (!attached) return; // Don't try painting things that aren't in the hierarchy
       if (_needsPaint) return;
  -    if (createNewDisplayList) {
  +    if (requiresCompositing) {
         _needsPaint = true;
         _nodesNeedingPaint.add(this);
         scheduler.ensureVisualUpdate();
  
positive.code: 
    static List<RenderObject> _nodesNeedingPaint = new List<RenderObject>();
  
    final sky.PaintingNode _paintingNode = new sky.PaintingNode();
    sky.PaintingNode get paintingNode {
      assert(createNewDisplayList);
      return _paintingNode;
    }
    bool _needsPaint = true;
    bool get needsPaint => _needsPaint;
  
  
negative.code:     try {
        _paintWithContext(context, Offset.zero);
      } catch (e) {
        print('Exception raised during _repaint:\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
    }
  
    void _paintWithContext(PaintingContext context, Offset offset) {
  