code: @Override
    public boolean add(KType key) {
      if (Intrinsics.isEmpty(key)) {
        assert Intrinsics.isEmpty(keys[mask + 1]);
        boolean added = !hasEmptyKey;
        hasEmptyKey = true;
        return added;
      } else {
        final KType [] keys = Intrinsics.<KType[]> cast(this.keys);
        final int mask = this.mask;
        int slot = hashKey(key) & mask;
        
        KType existing;
        while (!Intrinsics.isEmpty(existing = keys[slot])) {
          if (Intrinsics.equals(this, key, existing)) {
            return false;
          }
          slot = (slot + 1) & mask;
        }
  
        if (assigned == resizeAt) {
          allocateThenInsertThenRehash(slot, key);
        } else {
          keys[slot] = key;
        }
    
        assigned++;
        return true;
      }
    }
docs: {@inheritDoc}