anchor.diff:  abstract class Widget {
   
     Widget({ String key }) {
  -    _key = key == null ? "$runtimeType" : "$runtimeType-$key";
  +    _key = key != null ? key : runtimeType.toString();
       assert(this is AbstractWidgetRoot || _inRenderDirtyComponents); // you should not build the UI tree ahead of time, build it only during build()
     }
   
  
positive.code:       return null;
      }
  
      if (oldNode != null && node._key == oldNode._key && node._retainStatefulNodeIfPossible(oldNode)) {
        assert(oldNode.mounted);
        assert(!node.mounted);
        oldNode._sync(node, slot);
  
negative.code:       currentNode = children[endIndex - 1];
        oldNode = oldChildren[oldEndIndex - 1];
  
        if (currentNode.runtimeType != oldNode.runtimeType || currentNode.key != oldNode.key) {
          break;
        }
  
  