anchor.diff:    }
   
     @override
  +  Node<K, V> freeze() {
  +    final newList = new List<Node<K, V>>()..length = list.length;
  +    for (int i = 0; i < list.length; i++) {
  +      final node = list[i];
  +      if (node != null) newList[i] = node.freeze();
  +    }
  +    return new ListNode(count, newList);
  +  }
  +
  +  @override
     Node<K, V> add(int shift, int hash, K key, V value, Box addedLeaf) {
       int idx = mask(hash, shift);
       Node<K, V> node = list[idx];
  
positive.code:     }
    }
  
    Node<K, V> add(int shift, int hash, K key, V value, Box addedLeaf);
  
    Node<K, V> addM(int shift, int hash, K key, V value, Box addedLeaf);
  
negative.code:   Iterable iter(SelectorFunction f) => _iterNode(list, f);
  
    int _index(int bit) => _bitCount(bitmap & (bit - 1));
  
    @override
    Node<K, V> freeze() {
      final newList = new List()..length = list.length;
      for (int i = 0; i < list.length; i += 2) {
        final key = list[i];
        final nodeOrValue = list[i + 1];
        if (key != null) {
          newList[i] = list[i];
          newList[i + 1] = list[i + 1];
        } else if (nodeOrValue != null) {
          newList[i + 1] = (nodeOrValue as Node).freeze();
        }
      }
      return new BitmapIndexedNode(bitmap, newList);
    }
  
    @override
    Node<K, V> add(int shift, int hash, K key, V value, Box addedLeaf) {
  