anchor.diff:          return newNode; // Nothing to do. Subtrees must be identical.
         }
   
  -      assert(() {
  -        'You have probably used a single instance of a Widget in two different places in the widget tree. Widgets can only be used in one place at a time.';
  -        return newNode == null || newNode.isFromOldGeneration;
  -      });
  -
  +      // if the old node isn't the same as the new node and has already been synced, then
  +      // we must assume that it has been moved elsewhere in the tree and isn't really a
  +      // match for the node we're trying to insert.
         if (oldNode != null && !oldNode.isFromOldGeneration)
           oldNode = null;
   
  
positive.code:     // top of the lists
      while ((childrenTop <= oldChildrenBottom) && (childrenTop <= newChildrenBottom)) {
        Widget oldChild = oldChildren[childrenTop];
        if (!oldChild.isFromOldGeneration)
          break;
        assert(oldChild.mounted);
        Widget newChild = newChildren[childrenTop];
        if (!Widget._canSync(oldChild, newChild))
          break;
        childrenTop += 1;
  
negative.code:       nextSibling = newChild;
      }
  
      // clean up any of the remaining middle nodes from the old list
      if (haveOldNodes && !oldKeyedChildren.isEmpty) {
        for (Widget oldChild in oldKeyedChildren.values)
          if (oldChild.isFromOldGeneration)
  