code: private void clean() {
          Iterator<Entry<K, WeakReference<V>>> iter = entrySet().iterator();
          while (iter.hasNext()) {
              Entry<K, WeakReference<V>> e = iter.next();
              if (e != null && e.getValue() != null
                  && e.getValue().get() == null) {
                  iter.remove();
              }
          }
      }
docs: Removes all cleared entries from this map (i.e. entries whose value
  is a cleared {@link WeakReference}).