code: public Object putWeak(Object key)
      {
          Object underlying = this.underlyingObjectGetter.getUnderlyingObject(key);
          return putWeakUsingUnderlying(key, underlying);
      }
docs: weak but clean references: