anchor.diff:            // both [a] and [b] have more then 1 child, so we should handle
             // more complex situations with inserting/removing and repositioning
             // childrens.
  +          assert(() {
  +            final aKey = a[0].key;
  +            for (var i = 0; i < b.length; i++) {
  +              if ((aKey == null && b[i].key != null) ||
  +                  (aKey != null && b[i].key == null)) {
  +                throw new AssertionFailure(
  +                    'All children inside of the Virtual DOM Node should have '
  +                    'either explicit, or implicit keys.\n'
  +                    'Child at position old:0 has key $aKey\n'
  +                    'Child at position new:$i has key ${b[i].key}\n'
  +                    'Old children: $a\n'
  +                    'New children: $b');
  +              }
  +            }
  +            return true;
  +          }());
  +
             if (a.first.key == null) {
               return _updateImplicitChildren(a, b, context);
             }
  
positive.code:     assert(() {
        if (children.isNotEmpty) {
          final key = children[0].key;
          for (var i = 0; i < children.length; i++) {
            if ((key == null && children[i].key != null) ||
                (key != null && children[i].key == null)) {
              throw new AssertionFailure(
  
negative.code:       if (b == null || b.isEmpty) {
          // when [b] is empty, it means that all childrens from list [a] were
          // removed
          for (var i = 0; i < a.length; i++) {
            removeChild(a[i], context);
          }
  