code: func (s *StatsRecorder) Put(b bgzf.Block) (evicted bgzf.Block, retained bool) {
  	s.mu.Lock()
  	s.stats.Puts++
  	blk, retained := s.Cache.Put(b)
  	if retained {
  		s.stats.Retains++
  		if blk != nil {
  			s.stats.Evictions++
  		}
  	}
  	s.mu.Unlock()
  	return blk, retained
  }
docs: // Put inserts a Block into the underlying Cache, returning the Block and eviction
  // status according to the underlying cache behavior. It updates the puts, retains and
  // evictions statistics.