code: func (s *MatcherSession) AllocateSections(bit uint, count int) []uint64 {
  	fetcher := make(chan *Retrieval)
  
  	select {
  	case <-s.quit:
  		return nil
  	case s.matcher.retrievals <- fetcher:
  		task := &Retrieval{
  			Bit:      bit,
  			Sections: make([]uint64, count),
  		}
  		fetcher <- task
  		return (<-fetcher).Sections
  	}
  }
docs: // AllocateSections assigns all or part of an already allocated bit-task queue
  // to the requesting process.