private void putForCreate(Object key, int value) {
    int hash = (key == null) ? 0 : hash(hashingStrategy.hashCode(key));
    int i = indexFor(hash, table.length);

    /*
     * Look for preexisting entry for key. This will never happen for clone or deserialize. It will
     * only happen for construction if the input Map is a sorted map whose ordering is inconsistent
     * w/ equals.
     */
    for (Entry e = table[i]; e != null; e = e.next) {
      Object k;
      if (e.hash == hash
          && ((k = e.key) == key || (key != null && hashingStrategy.equals(k, key)))) {
        e.value = value;
        return;
      }
    }

    createEntry(hash, key, value, i);
  }
This method is used instead of put by constructors and pseudoconstructors (clone, readObject).
It does not resize the table, check for comodification, etc. It calls createEntry rather than
addEntry.
geode-core/src/main/java/org/apache/geode/cache/query/internal/ObjectIntHashMap.java