public V remove(Object key) {
        int hash = hashOf(key);
        return segmentFor(hash).remove(key, hash, null, false);
    }
Removes the key (and its corresponding value) from this map.
This method does nothing if the key is not in the map.

@param  key the key that needs to be removed
@return the previous value associated with <tt>key</tt>, or
        <tt>null</tt> if there was no mapping for <tt>key</tt>
@throws NullPointerException if the specified key is null
commons-profiler/src/main/java/com/navercorp/pinpoint/common/profiler/concurrent/jsr166/ConcurrentReferenceHashMap.java