code: func (c *ExpirationCache) getOrExpire(key string) (interface{}, bool) {
  	// Prevent all inserts from the time we deem an item as "expired" to when we
  	// delete it, so an un-expired item doesn't sneak in under the same key, just
  	// before the Delete.
  	c.expirationLock.Lock()
  	defer c.expirationLock.Unlock()
  	timestampedItem, exists := c.getTimestampedEntry(key)
  	if !exists {
  		return nil, false
  	}
  	if c.expirationPolicy.IsExpired(timestampedItem) {
  		klog.V(4).Infof("Entry %v: %+v has expired", key, timestampedItem.Obj)
  		c.cacheStorage.Delete(key)
  		return nil, false
  	}
  	return timestampedItem.Obj, true
  }
docs: // getOrExpire retrieves the object from the TimestampedEntry if and only if it hasn't
  // already expired. It holds a write lock across deletion.