code: @Override
    public V put (final K aKey, final V aValue)
    {
      // throw out garbage collected values first
      _processQueue ();
      final SoftValue <K, V> aOld = m_aSrcMap.put (aKey, new SoftValue <> (aKey, aValue, m_aQueue));
      return aOld == null ? null : aOld.get ();
    }
docs: Here we put the key, value pair into the HashMap using a SoftValue object.