private void add(final int k, final int v) {
    if (k == 0) {
      if (containsNullKey) {
        return;
      }
      containsNullKey = true;
      values[keys.length] = v;
    }
    else {
      int index;
      int curr;
      // the starting point
      if (!((curr = keys[index = k & mask]) == 0)) {
        if (curr == k) {
          return;
        }
        while (!((curr = keys[index = index + 1 & mask]) == 0)) {
          if (curr == k) {
            return;
          }
        }
      }
      keys[index] = k;
      values[index] = v;
    }
  }
private void add(final int k, final int v)