anchor.diff:          ancestor.insert(this, slot);
       } else {
         root = old.root;
  -      assert(root != null);
  -    }
  -
  +    }
  +    assert(mounted);
  +    assert(root != null);
       _nodeMap[root] = this;
       syncRenderObject(old);
     }
   
     void syncRenderObject(RenderObjectWrapper old) {
       ParentData parentData = null;
  -    UINode parent = _parent;
  -    while (parent != null && parent is! RenderObjectWrapper) {
  -      if (parent is ParentDataNode && parent.parentData != null) {
  +    UINode ancestor = parent;
  +    while (ancestor != null && ancestor is! RenderObjectWrapper) {
  +      if (ancestor is ParentDataNode && ancestor.parentData != null) {
           if (parentData != null)
  -          parentData.merge(parent.parentData); // this will throw if the types aren't the same
  +          parentData.merge(ancestor.parentData); // this will throw if the types aren't the same
           else
  -          parentData = parent.parentData;
  +          parentData = ancestor.parentData;
         }
  -      parent = parent._parent;
  +      ancestor = ancestor.parent;
       }
       if (parentData != null) {
         assert(root.parentData != null);
  -      root.parentData.merge(parentData); // this will throw if the types aren't approriate
  -      assert(parent != null);
  -      assert(parent.root != null);
  -      parent.root.markNeedsLayout();
  +      root.parentData.merge(parentData); // this will throw if the types aren't appropriate
  +      if (parent.root != null)
  +        parent.root.markNeedsLayout();
       }
     }
   
  
positive.code:     _inRenderDirtyComponents = false;
    }
  
    _notifyMountStatusChanged();
  
    if (_shouldLogRenderDuration) {
      sw.stop();
  
negative.code:   void insert(RenderObjectWrapper child, dynamic slot);
  
    void _sync(UINode old, dynamic slot) {
      assert(parent != null);
      if (old == null) {
        root = createNode();
        assert(root != null);
  