anchor.diff:        _data[_usedData++] = value;
       }
     }
  -  
  +
     // If key is present, returns the index of the value in _data, else returns
     // the negated insertion point in _index.
     int _findValueOrInsertPoint(K key, int fullHash, int hashPattern, int size) {
  
positive.code:     return ((i << 1) + i) & sizeMask;
    }
    static int _nextProbe(int i, int sizeMask) => (i + 1) & sizeMask;
    
    // Fixed-length list of keys (set) or key/value at even/odd indices (map).
    List _data;
    // Length of _data that is used (i.e., keys + values for a map).
    int _usedData = 0;
    // Number of deleted keys.
    int _deletedKeys = 0;
    
    // A self-loop is used to mark a deleted key or value.
    static bool _isDeleted(List data, Object keyOrValue) =>
        identical(keyOrValue, data);
  
negative.code:     _index = new Uint32List(_HashBase._INITIAL_INDEX_SIZE);
      _data = new List(_HashBase._INITIAL_INDEX_SIZE);
    }
  
    int get length => (_usedData >> 1) - _deletedKeys;
    bool get isEmpty => length == 0;
    bool get isNotEmpty => !isEmpty;
  
    void _rehash() {
      if ((_deletedKeys << 2) > _usedData) {
        // TODO(koda): Consider shrinking.
        // TODO(koda): Consider in-place compaction and more costly CME check.
        _init(_index.length, _hashMask, _data, _usedData);
  