src/main/java/com/workplacesystems/utilsj/collections/TransactionalHashMap.java
private void putForCreate(K key, V value)
    {
        K k = maskNull(key);
        int hash = hash(k);
        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<K,V> e = table[i]; e != null; e = e.next)
        {
            if (e.hash == hash && eq(k, e.key))
            {
                e.value = value;
                return;
            }
        }
        
        createEntry(hash, k, value, i);
    }
private void putForCreate(K key, V value)
    {
        K k = maskNull(key);
        int hash = hash(k);
        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<K,V> e = table[i]; e != null; e = e.next)
        {
            if (e.hash == hash && eq(k, e.key))
            {
                e.value = value;
                return;
            }
        }
        
        createEntry(hash, k, 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.