anchor.diff:          return false; // never re-order these nodes
   
         ensureOldIdMap();
  -      oldNode = oldNodeIdMap[currentNode._key];
  +      oldNode = oldNodeIdMap[currentNode.key];
         if (oldNode == null)
           return false;
   
  -      oldNodeIdMap[currentNode._key] = null; // mark it reordered
  +      oldNodeIdMap[currentNode.key] = null; // mark it reordered
         assert(root is ContainerRenderObjectMixin);
         assert(old.root is ContainerRenderObjectMixin);
         assert(oldNode.root != null);
  
positive.code:     void advanceOldStartIndex() {
        oldStartIndex++;
        while (oldStartIndex < oldEndIndex &&
               oldNodeReordered(oldChildren[oldStartIndex]._key)) {
          oldStartIndex++;
        }
      }
  
negative.code:       if (child.interchangeable)
          continue; // when these nodes are reordered, we just reassign the data
  
        if (!idSet.add(child.key)) {
          throw '''If multiple non-interchangeable nodes exist as children of another node, they must have unique keys. Duplicate: "${child.key}"''';
        }
      }
      return false;
  