anchor.diff:        assert(node._relayoutSubtreeRoot == _relayoutSubtreeRoot);
         assert(node.parent != null);
         node = node.parent as RenderObject;
  -      if (!node._needsLayout)
  +      if ((!node._needsLayout) && (!node._debugDoingThisLayout))
           return false;
       }
       assert(node._relayoutSubtreeRoot == node);
  
positive.code:     if (_relayoutSubtreeRoot != this) {
        final parent = this.parent; // TODO(ianh): Remove this once the analyzer is cleverer
        assert(parent is RenderObject);
        parent.markNeedsLayout();
        assert(parent == this.parent); // TODO(ianh): Remove this once the analyzer is cleverer
      } else {
        _nodesNeedingLayout.add(this);
  
negative.code:       assert(_relayoutSubtreeRoot == this);
        RenderObject debugPreviousActiveLayout;
        assert(!_debugMutationsLocked);
        assert(!_doingThisLayoutWithCallback);
        assert(_debugCanParentUseSize != null);
        assert(() {
          _debugMutationsLocked = true;
  