anchor.diff:        _unionWithSubMap(_Owner owner, _SubMap<K, V> m, V combine(V x, V y), int depth) {
       int ormap = _bitmap | m._bitmap;
       int andmap = _bitmap & m._bitmap;
  -    List<_ANodeBase<K, V>> newarray =
  -        new List<_ANodeBase<K, V>>(_popcount(ormap));
  +    List<_NodeBase<K, V>> newarray =
  +        new List<_NodeBase<K, V>>(_popcount(ormap));
       int mask = 1, i = 0, i1 = 0, i2 = 0;
       int newSize = 0;
       while (mask <= ormap) {
         if ((andmap & mask) != 0) {
           _array[i1];
           m._array[i2];
  -        _ANodeBase<K, V> newMap =
  +        _NodeBase<K, V> newMap =
               m._array[i2]._unionWith(owner, _array[i1], combine, depth + 1);
           newarray[i] = newMap;
           newSize += newMap.length;
  
positive.code:   bool moveNext() => false;
  }
  
  class _EmptyMap<K, V> extends _ANodeBase<K, V> {
    _EmptyMap(_Owner owner) : super(owner, 0);
  
    V _get(K key, int hash, int depth) => _none;
  
negative.code:         i2++;
          i++;
        } else if ((_bitmap & mask) != 0) {
          _NodeBase<K, V> newMap = _array[i1];
          newarray[i] = newMap;
          newSize += newMap.length;
          i1++;
          i++;
        } else if ((m._bitmap & mask) != 0) {
          _NodeBase<K, V> newMap = m._array[i2];
          newarray[i] = newMap;
          newSize += newMap.length;
          i2++;
  