code: func (c *msgsCache) evict(now int64) {
  	if c.head == nil {
  		return
  	}
  	if now >= c.tail.expiration {
  		// Bulk remove
  		c.seqMaps = make(map[uint64]*cachedMsg)
  		c.head, c.tail, c.tryEvict = nil, nil, 0
  		return
  	}
  	cMsg := c.head
  	for cMsg != nil && cMsg.expiration <= now {
  		delete(c.seqMaps, cMsg.msg.Sequence)
  		cMsg = cMsg.next
  	}
  	if cMsg != c.head {
  		// There should be at least one left, otherwise, they
  		// would all have been bulk removed at top of this function.
  		cMsg.prev = nil
  		c.head = cMsg
  	}
  }
docs: // evict move down the cache maps, evicting the last one.
  // Store write lock is assumed held on entry