anchor.diff:                unchangedPosition = i;
                 break;
               } else {
  -              parent.insertChild(bNode, aNode, context);
  +              parent.insertChild(bNode, aNode, context, attached);
               }
             }
   
             if (unchangedPosition != -1) {
               for (var i = unchangedPosition + 1; i < b.length; i++) {
  -              parent.insertChild(b[i], null, context);
  +              parent.insertChild(b[i], null, context, attached);
               }
               aNode.update(b[unchangedPosition], context);
             } else {
  -            parent.removeChild(aNode, context);
  +            parent.removeChild(aNode, attached);
             }
           }
         } else if (b.length == 1) {
  
positive.code: 
        final nextPos = bEnd + 1;
        final next = nextPos < b.length ? b[nextPos] : null;
        parent.moveChild(bEndNode, next, context);
  
        aStart++;
        bEnd--;
  
negative.code: 
    // All nodes from [b] are updated, remove the rest from [a].
    while (bStart <= bEnd) {
      parent.insertChild(b[bStart++], next, context, attached);
    }
  }
  
  void _updateExplicitChildren(VNode parent, List<VNode> a, List<VNode> b, VContext context, bool attached) {
    int aStart = 0;
    int bStart = 0;
    int aEnd = a.length - 1;
  