code: func (c *cache) ensureCapacity(toAdd uint64) {
  	mustRemove := int64(c.size+toAdd) - int64(c.cap)
  	for mustRemove > 0 {
  		key := c.keyList.Back().Value.(string)
  		mustRemove -= int64(c.items[key].item.Size())
  		c.remove(key)
  	}
  }
docs: // Given the need to add some number of new bytes to the cache,
  // evict items according to the eviction policy until there is room.
  // The caller should hold the cache lock.