anchor.diff:  
     ImmutableMap<K,V> _delete(K key, int hash, int depth) {
       int branch = (hash >> (depth * 5)) & 0x1f;
  -    if (_submap.containsKey(branch)) {
  +    if (_submap[branch] !== null) {
         _AImmutableMap<K,V> m = _submap[branch];
         _AImmutableMap<K,V> newm = m._delete(key, hash, depth + 1);
  -      Map<int, _AImmutableMap<K,V>> newsubmap =
  -          new Map<int, _AImmutableMap<K,V>>.from(_submap);
  +      List<_AImmutableMap<K,V>> newsubmap =
  +          new List<_AImmutableMap<K,V>>.from(_submap);
         if (newm._isEmpty()) {
  -        newsubmap.remove(branch);
  +        newsubmap[branch] = null;
         } else {
           newsubmap[branch] = newm;
         }
  
positive.code: 
    ImmutableMap<K,V> _insertWith(
        LList<Pair<K,V>> keyValues, V combine(V x, V y), int hash, int depth) {
      Map<int, _AImmutableMap<K,V>> newsubmap =
          new Map<int, _AImmutableMap<K,V>>.from(_submap);
      int branch = (hash >> (depth * 5)) & 0x1f;
      if (_submap.containsKey(branch)) {
        _AImmutableMap<K,V> m = _submap[branch];
        newsubmap[branch] = m._insertWith(keyValues, combine, hash, depth + 1);
      } else {
  
negative.code: 
    Option<V> _lookup(K key, int hash, int depth) {
      int branch = (hash >> (depth * 5)) & 0x1f;
      if (_submap[branch] !== null) {
        _AImmutableMap<K,V> map = _submap[branch];
        return map._lookup(key, hash, depth + 1);
      } else {
  