code: public boolean replace(String key, CacheEntry oldValue, CacheEntry newValue) {
  		final String sourceMethod = "replace"; //$NON-NLS-1$
  		boolean replaced = false;
  		SignalUtil.lock(cloneLock.readLock(), sourceClass, sourceMethod);
  		try {
  			replaced = map.replace(keyPrefix + key, oldValue, newValue);
  			if (replaced && oldValue != newValue) {
  				oldValue.delete(cacheMgr);
  			}
  		} finally {
  			cloneLock.readLock().unlock();
  		}
  		return replaced;
  	}
docs: Replaces the value associated with the key only if the existing value is
  equal to <code>oldValue</code>
  
  @param key the cache key
  @param oldValue the expected value
  @param newValue the new value
  @return true if the value was replace