anchor.diff:              aNode.key != null && aNode.key == bNode.key) {
             aNode.update(bNode, context);
           } else {
  -          parent.removeChild(aNode, context);
  -          parent.insertChild(bNode, null, context, attached);
  +          parent._removeChild(aNode, context);
  +          parent._insertChild(bNode, null, context, attached);
           }
         } else if (a.length == 1) {
           // fast path when [a] have 1 child
  
positive.code:       // when [b] is empty, it means that all children from list [a] were
        // removed
        for (int i = 0; i < a.length; i++) {
          parent.removeChild(a[i], context);
        }
      } else {
        if (a.length == 1 && b.length == 1) {
  
negative.code:     }
    }
  
    void _moveChild(VNode node, VNode next, VContext context) {
      if ((flags & contentFlag) == 0) {
        final nextRef = next == null ? null : next.ref;
        ref.insertBefore(node.ref, nextRef);
  