src/main/java/com/stoyanr/evictor/map/ConcurrentMapWithTimedEvictionDecorator.java
/**
     * Removes the mapping for a key from this map if it is present. More
     * formally, if this map contains a mapping from key <tt>k</tt> to value
     * <tt>v</tt> such that <code>(key==null ?  k==null : key.equals(k))</code>,
     * that mapping is removed. (The map can contain at most one such mapping.)
     * 
     * <p>
     * Returns the value to which this map previously associated the key, or
     * <tt>null</tt> if the map contained no mapping for the key or it has
     * expired.
     * 
     * <p>
     * If the delegate map permits null values, then a return value of
     * <tt>null</tt> does not <i>necessarily</i> indicate that the map contained
     * no mapping for the key; it's also possible that the map explicitly mapped
     * the key to <tt>null</tt>.
     * 
     * <p>
     * The map will not contain a mapping for the specified key once the call
     * returns.
     * 
     * @param key
     *            key whose mapping is to be removed from the map, if it has not
     *            expired yet.
     * 
     * @return the previous value associated with <tt>key</tt>, or <tt>null</tt>
     *         if there was no mapping for <tt>key</tt> or it has expired.
     * 
     * @throws UnsupportedOperationException
     *             if the <tt>remove</tt> operation is not supported by the
     *             delegate map
     * 
     * @throws ClassCastException
     *             if the key is of an inappropriate type for this map
     * 
     * @throws NullPointerException
     *             if the specified key is null and the delegate map does not
     *             permit null keys
     */
Removes the mapping for a key from this map if it is present. More
formally, if this map contains a mapping from key k to value
v such that (key==null .  k==null : key.equals(k)),
that mapping is removed. (The map can contain at most one such mapping.)


Returns the value to which this map previously associated the key, or
null if the map contained no mapping for the key or it has
expired.


If the delegate map permits null values, then a return value of
null does not necessarily indicate that the map contained
no mapping for the key; it's also possible that the map explicitly mapped
the key to null.


The map will not contain a mapping for the specified key once the call
returns.

@param key
key whose mapping is to be removed from the map, if it has not
expired yet.

@return the previous value associated with key, or null
if there was no mapping for key or it has expired.

@throws UnsupportedOperationException
if the remove operation is not supported by the
delegate map

@throws ClassCastException
if the key is of an inappropriate type for this map

@throws NullPointerException
if the specified key is null and the delegate map does not
permit null keys
Removes the mapping for a key from this map if it is present . More formally if this map contains a mapping from key k to value v such that ( key == null . k == null : key . equals ( k )) that mapping is removed . ( The map can contain at most one such mapping . ) Returns the value to which this map previously associated the key or null if the map contained no mapping for the key or it has expired . If the delegate map permits null values then a return value of null does not necessarily indicate that the map contained no mapping for the key ; it ' s also possible that the map explicitly mapped the key to null . The map will not contain a mapping for the specified key once the call returns . @param key key whose mapping is to be removed from the map if it has not expired yet . @return the previous value associated with key or null if there was no mapping for key or it has expired . @throws UnsupportedOperationException if the remove operation is not supported by the delegate map @throws ClassCastException if the key is of an inappropriate type for this map @throws NullPointerException if the specified key is null and the delegate map does not permit null keys
@Override
    public V remove(Object key) {
        EvictibleEntry<K, V> oe = this.delegate.remove(key);
        if (oe != null) {
            cancelEviction(oe);
        }
        return ((oe == null) || oe.shouldEvict()) ? null : oe.getValue();
    }
@ Override public V remove ( Object key ) { EvictibleEntry < K , V > oe = this . delegate . remove ( key ) ; if ( oe != null ) { cancelEviction ( oe ) ; } return ( ( oe == null ) || oe . shouldEvict ( ) ) ? null : oe . getValue ( ) ; }
Removes the mapping for a key from this map if it is present.
Removes the mapping for a key from this map if it is present .
// An entry is being removed, cancel its automatic eviction