anchor.diff:    void detachRoot();
   
     // Returns the child which should be retained as the child of this node.
  -  Widget syncChild(Widget node, Widget oldNode, dynamic slot) {
  -
  -    assert(oldNode is! Component || (oldNode is Component && !oldNode._disqualifiedFromEverAppearingAgain)); // TODO(ianh): Simplify this once the analyzer is cleverer
  -
  -    if (node == oldNode) {
  -      assert(node == null || node.mounted);
  -      assert(node is! RenderObjectWrapper || (node is RenderObjectWrapper && node._ancestor != null)); // TODO(ianh): Simplify this once the analyzer is cleverer
  -      return node; // Nothing to do. Subtrees must be identical.
  -    }
  -
  -    if (node == null) {
  +  Widget syncChild(Widget newNode, Widget oldNode, dynamic slot) {
  +
  +    assert(oldNode is! Component ||
  +           (oldNode is Component && !oldNode._disqualifiedFromEverAppearingAgain)); // TODO(ianh): Simplify this once the analyzer is cleverer
  +
  +    if (newNode == oldNode) {
  +      assert(newNode == null || newNode.mounted);
  +      assert(newNode is! RenderObjectWrapper ||
  +             (newNode is RenderObjectWrapper && newNode._ancestor != null)); // TODO(ianh): Simplify this once the analyzer is cleverer
  +      return newNode; // Nothing to do. Subtrees must be identical.
  +    }
  +
  +    if (newNode == null) {
         // the child in this slot has gone away
         assert(oldNode.mounted);
         oldNode.detachRoot();
  
positive.code:       }
      }
  
      assert(!node.mounted);
      node.setParent(this);
      node._sync(oldNode, slot);
      assert(node.root is RenderObject);
      return node;
    }
  
    String toString() {
  
negative.code:     }
  
      if (oldNode != null) {
        if (oldNode.runtimeType == newNode.runtimeType && oldNode.key == newNode.key) {
          if (newNode._retainStatefulNodeIfPossible(oldNode)) {
            assert(oldNode.mounted);
            assert(!newNode.mounted);
            oldNode.setParent(this);
            oldNode._sync(newNode, slot);
            assert(oldNode.root is RenderObject);
            return oldNode;
          }
  