base/common/src/main/com/thesett/common/util/TimeoutMap.java
public Object remove(Object key)
    {
        // Synchronize on the cache to ensure its integrity in a multi-threaded environment.
        synchronized (cache)
        {
            // Remove the element from the marked heap (if it exists in the heap) and from the cache.
            marked.remove(key);

            return cache.remove(key);
        }
    }
public Object remove(Object key)
    {
        // Synchronize on the cache to ensure its integrity in a multi-threaded environment.
        synchronized (cache)
        {
            // Remove the element from the marked heap (if it exists in the heap) and from the cache.
            marked.remove(key);

            return cache.remove(key);
        }
    }
Removes the mapping for this key from this map if it is present (optional operation). 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 the map previously associated the key, or <tt>null</tt> if the map contained no
mapping for this key. (A <tt>null</tt> return can also indicate that the map previously associated <tt>null</tt>
with the specified key if the implementation supports <tt>null</tt> values.) 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.

@return previous value associated with specified key, or <tt>null</tt> if there was no mapping for key.

@throws ClassCastException            if the key is of an inappropriate type for this map (optional).
@throws NullPointerException          if the key is <tt>null</tt> and this map does not permit <tt>null</tt> keys
(optional).
@throws UnsupportedOperationException if the <tt>remove</tt> method is not supported by this map.