anchor.diff:    bool retainStatefulNodeIfPossible(StatefulComponent newNode) {
       assert(newNode != null);
       assert(!newNode._isStateInitialized);
  +    assert(this != newNode);
       assert(Widget._canSync(this, newNode));
       assert(_child != null);
   
  
positive.code:       childrenTop -= 1;
        Widget oldChild = oldChildren[childrenTop];
        assert(oldChild.mounted);
        assert(oldChild.isFromOldGeneration);
        Widget newChild = newChildren[childrenTop];
        assert(newChild.isFromOldGeneration);
        assert(Widget._canSync(oldChild, newChild));
        newChild = syncChild(newChild, oldChild, nextSibling);
        assert(newChild.mounted);
  
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)
  