code: func (tp *BytePool) Get(size int) []byte {
  	if size < 1 || size > tp.maxSize {
  		return make([]byte, size)
  	}
  	var x []byte
  
  	o := log2Ceil(uint32(size))
  	p := &tp.list_of_pools[o]
  	p.mu.Lock()
  	if n := len(p.list); n > 0 {
  		x = p.list[n-1]
  		p.list[n-1] = nil
  		p.list = p.list[:n-1]
  	}
  	p.mu.Unlock()
  	if x == nil {
  		x = make([]byte, 1<<o)
  	}
  	return x[:size]
  }
docs: // Get a byte slice from the pool.