anchor.diff:    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);
  +    return (a == b) ||
  +           (a.runtimeType == b.runtimeType &&
  +            a.key == b.key &&
  +            (!a._hasState || !b._hasState));
     }
   
     bool _mounted = false;
  
positive.code:       nextSibling = newChild;
      }
  
      if (haveOldNodes && !oldKeyedChildren.isEmpty) {
        for (Widget oldChild in oldKeyedChildren.values)
          if (oldChild.isFromOldGeneration)
  
negative.code:           assert(newNode.isFromOldGeneration);
            assert(oldNode.isFromOldGeneration);
            assert(Widget._canSync(newNode, oldNode));
            if (oldNode == newNode) {
              newNode.setParent(this);
              newNode._markAsFromCurrentGeneration();
              return newNode;
            } else if (oldNode.retainStatefulNodeIfPossible(newNode)) {
              assert(oldNode.mounted);
              assert(!newNode.mounted);
              oldNode.setParent(this);
  