code: public synchronized Object put(final String key, final Object value) {
  		try {
  			if (maxCacheSize == 0) {
  				return null;
  			}
  
  			// if the key isn't in the cache and the cache is full...
  			if (!super.containsKey(key) && !list.isEmpty()
  					&& list.size() + 1 > maxCacheSize) {
  				final Object deadKey = list.removeLast();
  				super.remove(deadKey);
  			}
  
  			updateKey(key);
  		} catch (Exception e) {
  			log.log(Level.SEVERE, "put", e);
  		}
  		return super.put(key, value);
  	}
docs: Adds an Object to the cache. If the cache is full, removes the last