anchor.diff:              final node = b[pos];
               final nextPos = pos + 1;
               final next = nextPos < b.length ? b[nextPos].ref : null;
  -            injectBefore(node, parent, next, context);
  +            parent.insertBefore(node, next, context);
             } else {
               if (j < 0 || i != seq[j]) {
                 final pos = i + start;
                 final node = a[sources[i]];
                 final nextPos = pos + 1;
                 final next = nextPos < b.length ? b[nextPos].ref : null;
  -              parent.insertBefore(node.ref, next);
  +              parent.move(node, next, context);
               } else {
                 j--;
               }
  
positive.code:             unchangedPosition = i;
              break;
            } else {
              injectBefore(bNode, parent, aNode.ref, context);
            }
          }
  
          if (unchangedPosition != -1) {
            for (var i = unchangedPosition + 1; i < b.length; i++) {
              inject(b[i], parent, context);
            }
            aNode.update(b[unchangedPosition], context);
          } else {
            aNode.dispose(context);
          }
        } else if (b.length == 1) {
          // fast path when [b] have 1 child
  
negative.code:           }
  
            if (removed) {
              parent.removeChild(aNode, context);
              removeOffset++;
            }
          }
  