public void put(int k, int v) {
    assert v != 0;
    int pos;
    int curr;
    int[] key = this.key;
    if (k == 0) {
      nullValue = v;
      containsNull = true;
    }
    else {
      // The starting point.
      if (!((curr = key[pos = Hash.mix(k) & mask]) == 0)) {
        if (curr == k) {
          value[pos] = v;
          return;
        }
        while (!((curr = key[pos = pos + 1 & mask]) == 0)) {
          if (curr == k) {
            value[pos] = v;
            return;
          }
        }
      }
      key[pos] = k;
      value[pos] = v;
    }
    if (size++ >= maxFill) {
      rehash(Hash.arraySize(size + 1, f));
    }
    assert get(k, -1) == v && get(k, 0) == v;
  }
public void put(int k, int v)