anchor.diff:    if (start == bLength) {
       if (start != aLength) {
         for (var i = start; i < a.length; i++) {
  -        a[i].dispose(context);
  +        parent.removeChild(a[i], context);
         }
       }
     } else if (start == aLength) {
       for (var i = start; i < b.length; i++) {
  -      final n = b[i];
  -      inject(n, parent, context);
  +      parent.insertBefore(b[i], null, context);
       }
     } else {
       var aEnd = a.length - 1;
  
positive.code:             unchangedPosition = i;
              break;
            } else {
              aNode.dispose(context);
            }
          }
  
          if (unchangedPosition != -1) {
            for (var i = unchangedPosition + 1; i < a.length; i++) {
              a[i].dispose(context);
            }
            a[unchangedPosition].update(bNode, context);
          } else {
            inject(bNode, parent, context);
          }
        } else {
          // both [a] and [b] have more than 1 child, so we should handle
          // more complex situations with inserting/removing and repositioning
          // childrens
          return _syncChildren2(a, b, parent, context);
        }
      }
    } else if (b.length > 0) {
      // all childrens from list [b] were inserted
      for (var i = 0; i < b.length; i++) {
        final n = b[i];
        inject(n, parent, context);
      }
    }
  }
  
  void _syncChildren2(List<Node> a, List<Node> b, html.Element parent, Context context) {
    var aLength = a.length;
    var bLength = b.length;
  
  
negative.code:             final node = b[pos];
              final nextPos = pos + 1;
              final next = nextPos < b.length ? b[nextPos].ref : null;
              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.move(node, next, context);
              } else {
                j--;
              }
  