public V put(K key, V value) {
		if (key == null) {
			return putForNullKey(value);
		} else {
			int hashValue = hash(key.hashCode());
			int index = indexFor(hashValue);
			for (Entry<K, V> e = table[index]; e != null; e = e.next){
				Object k;
				if (e.hash == hashValue && ((k = e.key) == key || k.equals(key))) {
					V oldValue = e.value;
					e.value = value;
					return oldValue;
				}
			}
			addEntry(hashValue, key, value, index);
			return null;
		}
	}