anchor.diff:            assert(newNode.isFromOldGeneration);
             assert(oldNode.isFromOldGeneration);
             assert(Widget._canSync(newNode, oldNode));
  -          if (oldNode.retainStatefulNodeIfPossible(newNode)) {
  +          if (oldNode == newNode) {
  +            newNode.setParent(this);
  +            newNode._markAsFromCurrentGeneration();
  +            return newNode;
  +          } else if (oldNode.retainStatefulNodeIfPossible(newNode)) {
               assert(oldNode.mounted);
               assert(!newNode.mounted);
               oldNode.setParent(this);
  
positive.code:   static bool _canSync(Widget a, Widget b) {
      assert(a != null);
      assert(b != null);
      return a.runtimeType == b.runtimeType &&
             a.key == b.key &&
             (!a._hasState || !b._hasState);
    }
  
    bool _mounted = false;
  
negative.code:       childrenTop -= 1;
        Widget oldChild = oldChildren[childrenTop];
        assert(oldChild.mounted);
        Widget newChild = newChildren[childrenTop];
        assert(Widget._canSync(oldChild, newChild));
        newChild = syncChild(newChild, oldChild, nextSibling);
        assert(newChild.mounted);
  