void (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; }