public Set<K> keySet() {
        Set<K> ks = keySet;
        return (ks != null) ? ks : (keySet = new KeySet());
    }
Returns a {@link Set} view of the keys contained in this map.
The set is backed by the map, so changes to the map are
reflected in the set, and vice-versa.  The set supports element
removal, which removes the corresponding mapping from this map,
via the <tt>Iterator.remove</tt>, <tt>Set.remove</tt>,
<tt>removeAll</tt>, <tt>retainAll</tt>, and <tt>clear</tt>
operations.  It does not support the <tt>add</tt> or
<tt>addAll</tt> operations.

<p>The view's <tt>iterator</tt> is a "weakly consistent" iterator
that will never throw {@link ConcurrentModificationException},
and guarantees to traverse elements as they existed upon
construction of the iterator, and may (but is not guaranteed to)
reflect any modifications subsequent to construction.
commons-profiler/src/main/java/com/navercorp/pinpoint/common/profiler/concurrent/jsr166/ConcurrentWeakHashMap.java