code: public boolean put(long key, int value) {
  	int i = indexOfInsertion(key);	
  	if (i<0) { //already contained
  		i = -i -1;
  		this.values[i]=value;
  		return false;
  	}
  
  	if (this.distinct > this.highWaterMark) {
  		int newCapacity = chooseGrowCapacity(this.distinct+1,this.minLoadFactor, this.maxLoadFactor);
  		rehash(newCapacity);
  		return put(key, value);
  	}
  
  	this.table[i]=key;
  	this.values[i]=value;
  	if (this.state[i]==FREE) this.freeEntries--;
  	this.state[i]=FULL;
  	this.distinct++;
  
  	if (this.freeEntries < 1) { //delta
  		int newCapacity = chooseGrowCapacity(this.distinct+1,this.minLoadFactor, this.maxLoadFactor);
  		rehash(newCapacity);
  	}
  
  	return true;
  }
docs: Associates the given key with the given value.
  Replaces any old <tt>(key,someOtherValue)</tt> association, if existing.
  
  @param key the key the value shall be associated with.
  @param value the value to be associated.
  @return <tt>true</tt> if the receiver did not already contain such a key;
  <tt>false</tt> if the receiver did already contain such a key - the new value has now replaced the formerly associated value.