code: public <T> Object put(String key, T value) {
  		Object last = null;
  		int index = keys.indexOf(key);
  		if (index >= 0) {
  			last = grab(key);
  			values.remove(index);
  			values.add(index, new GenericEntry<T>(value));
  		} else {
  			keys.addSorted(key);
  			index = keys.indexOf(key);
  			values.add(index, new GenericEntry<T>(value));
  		}
  		isEmpty = false;
  		size++;
  		return last;
  	}
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
  by the specified value. (A map m is said to contain a mapping for a key k
  if and only if m.containsKey(k) would return true.)
  
  @param key
  @param value
  @return the value previously associated with this key, null if key did not exist before