code: func NewBoundedSemaphore(count uint) Semaphore {
  	sem := &boundedSemaphore{
  		slots: make(chan struct{}, int(count)),
  	}
  	for i := 0; i < cap(sem.slots); i++ {
  		sem.slots <- struct{}{}
  	}
  	return sem
  }
docs: // Create a bounded semaphore. The count parameter must be a positive number.
  // NOTE: The bounded semaphore will panic if the user tries to Release
  // beyond the specified count.