public void put(int key, @NotNull T value) {
    if (key == 0) {
      specialZeroValue = value;
      hasZeroValue = true;
      return;
    }

    if (size >= (2 * values.length) / 3) {
      rehash();
    }
    int index = hashIndex(keys, key);
    if (values[index] == null) {
      size++;
    }
    values[index] = value;
    if (keys[index] == 0) {
      keys[index] = key;
    }
  }
public void put(int key, @NotNull T value)