code: public V put(K key, V value) {
          cleanUp();
          return map.put(new IdentityWeakReference<>(key, queue), value);
      }
docs: Puts into the underlying
  
  @param key key with which the specified value is to be associated
  @param value value to be associated with the specified key
  @return the previous value associated with <tt>key</tt>, or
  <tt>null</tt> if there was no mapping for <tt>key</tt>.
  (A <tt>null</tt> return can also indicate that the map
  previously associated <tt>null</tt> with <tt>key</tt>,
  if the implementation supports <tt>null</tt> values.)