anchor.diff:    }
   }
   
  -// RenderObjectWrappers correspond to a desired state of a RenderObject.
  -// They are fully immutable, with one exception: A Widget which is a
  -// Component which lives within an MultiChildRenderObjectWrapper's
  -// children list, may be replaced with the "old" instance if it has
  +// RenderObjectWrappers correspond to a desired state of a
  +// RenderObject. They are fully immutable, except that a Widget which
  +// is a Component which lives within a RenderObjectWrapper's children
  +// list may be in-place replaced with the "old" instance if it has
   // become stateful.
   abstract class RenderObjectWrapper extends Widget {
   
  
positive.code:       if (_ancestor is RenderObjectWrapper)
          _ancestor.insertChildRoot(this, slot);
      } else {
        assert(old is RenderObjectWrapper);
        _renderObject = old.renderObject;
        _ancestor = old._ancestor;
        assert(_renderObject != null);
  
negative.code:       }
      }
  
      void searchForOldNode() {
        if (currentNode.key == null)
          return; // never re-order these nodes
  
        ensureOldIdMap();
        oldNode = oldNodeIdMap[currentNode.key];
        if (oldNode == null)
          return;
  
        oldNodeIdMap[currentNode.key] = null; // mark it reordered
        assert(renderObject is ContainerRenderObjectMixin);
        assert(old.renderObject is ContainerRenderObjectMixin);
        assert(oldNode.renderObject != null);
  
        renderObject.move(oldNode.renderObject, before: nextSibling);
      }
  
      // Scan forwards, this time we may re-order;
  