code: public boolean remove(String key, CacheEntry value) {
  		final String sourceMethod = "remove"; //$NON-NLS-1$
  
  		boolean removed = false;
  		SignalUtil.lock(cloneLock.readLock(), sourceClass, sourceMethod);
  		try {
  			if (key != null && value != null) {
  				removed = map.remove(keyPrefix + key, value);
  			}
  			if (removed) {
  				evictionLatch.decrement();
  				value.delete(cacheMgr);
  			} else {
  				evictionLatch.latchIfZero();
  			}
  		} finally {
  			cloneLock.readLock().unlock();
  		}
  		return removed;
  	}
docs: Removes the entry for the key only if currently mapped to the given
  value. If the entry is removed, then the entry count for this layer
  is decremented. If <code>evict</code> is true, then the
  <code>_evicted</code> flag will be set if the count is decremented to
  zero.  Either <code>key</code> and/or <code>value</code> may be null, in
  which case, nothing is removed, but if the entry count is zero, then
  <code>_evicted</code> is set to true.
  
  @param key
  The map key without the layer identifier prefix
  @param value
  The value expected to be associated with the specified
  key.
  @return true if the entry was removed