code: @Override
  	public synchronized void put(final CacheObject obj)
  	{
  		if (posList.contains(obj.getKey())) {
  			startSweeper();
  			obj.resetTimestamp();
  			// maintain insertion order, if any
  			if (map instanceof LinkedHashMap)
  				map.remove(obj.getKey());
  			map.put(obj.getKey(), obj);
  		}
  	}
docs: For a {@link CacheObject} to be put into the cache, its key
  {@link CacheObject#getKey()} has to be equal to one in the positive list of this
  cache.<br>
  If expiring of cache objects is set, and the timestamp of a {@link CacheObject} is
  renewed externally after it has been put into the cache, a new
  {@link #put(CacheObject)} is required for that object to apply the new timestamp
  and keep the cache in a consistent state.