code: public final V put(K key, V value) {
  		final int hash = hash(key);
  		final int slot = indexOf (hash);
  
  		// search the chain from the slot
  		for (Entry<K, V> e = table[slot]; e != null; e = e.next) {
  			Object k;
  			if (e.hashCode == hash && ((k = e.key) == key || key.equals(k))) {
  				// found match
  				V old = e.value;
  				e.value = value;
  				return old;
  			}
  		}
  
  		// no match, insert a new value
  		insertNewEntry(hash, key, value, slot);
  		return null;
  	}
docs: Inserts the given value, mapped under the given key. If the table already contains a value for
  the key, the value is replaced and returned. If no value is contained, yet, the function
  returns null.
  
  @param key The key to insert.
  @param value The value to insert.
  @return The previously mapped value for the key, or null, if no value was mapped for the key.
  
  @throws java.lang.NullPointerException Thrown, if the key is null.