anchor.diff:    final bool attached = context.isAttached;
     if (a != null && a.isNotEmpty) {
       if (b == null || b.isEmpty) {
  -      // when [b] is empty, it means that all childrens from list [a] were
  +      // when [b] is empty, it means that all children from list [a] were
         // removed
  -      for (var i = 0; i < a.length; i++) {
  +      for (int i = 0; i < a.length; i++) {
           parent.removeChild(a[i], attached);
         }
       } else {
  
positive.code:             }
            }
          } else {
            // [a] child position
            // if it is -1, then the child is removed
            var unchangedPosition = -1;
  
            for (var i = 0; i < b.length; i++) {
              final bNode = b[i];
              if (aNode.key == bNode.key) {
                unchangedPosition = i;
                break;
              } else {
                parent.insertChild(bNode, aNode, context, attached);
              }
            }
  
            if (unchangedPosition != -1) {
              for (var i = unchangedPosition + 1; i < b.length; i++) {
                parent.insertChild(b[i], null, context, attached);
              }
              aNode.update(b[unchangedPosition], context);
            } else {
              parent.removeChild(aNode, attached);
            }
          }
        } else if (b.length == 1) {
  
negative.code:             }
            }
          } else {
            int i = 0;
            bool updated = false;
            while (i < a.length) {
              final VNode aNode = a[i++];
              if (aNode.key == bNode.key) {
                aNode.update(bNode, context);
                updated = true;
                break;
              }
              parent.removeChild(aNode, attached);
            }
  
            if (!updated) {
              parent.insertChild(bNode, null, context, attached);
            } else {
              while (i < a.length) {
                parent.removeChild(a[i++], attached);
              }
            }
          }
        } else {
          // both [a] and [b] have more then 1 child, so we should handle
          // more complex situations with inserting/removing and repositioning
          // children.
          if (a.first.key == null) {
            return _updateImplicitChildren(parent, a, b, context, attached);
          }
  