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 false; // never re-order these nodes
  
        ensureOldIdMap();
        oldNode = oldNodeIdMap[currentNode._key];
        if (oldNode == null)
          return false;
  
        oldNodeIdMap[currentNode._key] = null; // mark it reordered
        assert(root is ContainerRenderObjectMixin);
        assert(old.root is ContainerRenderObjectMixin);
        assert(oldNode.root != null);
  
negative.code:       currentNode = children[endIndex - 1];
        oldNode = oldChildren[oldEndIndex - 1];
  
        if (currentNode.runtimeType != oldNode.runtimeType || currentNode.key != oldNode.key) {
          break;
        }
  
  