code: @Override
      public V put(K key, V value) {
  	if (key == null) return putForNullKey(value);
  	int hash = hash(key);
  	int i = indexFor(hash, table.length);
  	for (Entry<K, V> e = table[i]; e != null; e = e.next) {
  	    Object k;
  	    if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
  		V oldValue = e.value;
  		e.value = value;
  		e.recordAccess(this);
  		return oldValue;
  	    }
  	}
  
  	modCount++;
  	addEntry(hash, key, value, i);
  	return null;
      }
docs: Associates the specified value with the specified key in this map. If the map previously
  contained a mapping for the key, the old value is replaced.
  
  @param key key with which the specified value is to be associated
  @param value value to be associated with the specified key
  @return the previous value associated with <tt>key</tt>, or <tt>null</tt> if there was no mapping
  for <tt>key</tt>. (A <tt>null</tt> return can also indicate that the map previously
  associated <tt>null</tt> with <tt>key</tt>.)