code: func (c *msgsCache) get(seq uint64) *pb.MsgProto {
  	cMsg := c.seqMaps[seq]
  	if cMsg == nil {
  		return nil
  	}
  	// Bump the expiration
  	cMsg.expiration = time.Now().UnixNano() + cacheTTL
  	// If not already at the tail of the list, move it there
  	if cMsg != c.tail {
  		if cMsg.prev != nil {
  			cMsg.prev.next = cMsg.next
  		}
  		if cMsg.next != nil {
  			cMsg.next.prev = cMsg.prev
  		}
  		if cMsg == c.head {
  			c.head = cMsg.next
  		}
  		cMsg.prev = c.tail
  		c.tail.next = cMsg
  		cMsg.next = nil
  		// Ensure last expiration is at least >= previous one.
  		if cMsg.expiration < c.tail.expiration {
  			cMsg.expiration = c.tail.expiration
  		}
  		c.tail = cMsg
  	}
  	return cMsg.msg
  }
docs: // get returns a message if available in the cache.
  // Store write lock is assumed held on entry