anchor.diff:    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.
  
positive.code:   void clear() {
      if (!isEmpty) {
        // Use _data.length, since _index might be null.
        _init(_data.length, _hashMask);
      }
    }
  
    // Allocate new _index and _data, and optionally copy existing contents.
    void _init(int size, int hashMask, [List oldData, int oldUsed]) {
      assert(size & (size - 1) == 0);
      assert(_HashBase._UNUSED_PAIR == 0);
      _index = new Uint32List(size);
  
negative.code: 
    void clear() {
      if (!isEmpty) {
        _init(_index.length, _hashMask, null, 0);
      }
    }
  
    void _init(int size, int hashMask, List oldData, int oldUsed) {
      _index = new Uint32List(size);
      _hashMask = hashMask;
      _data = new List(size >> 1);
  