code: func (a *allocator) next() (int, bool) {
  	wrapped := a.last
  
  	// Find trailing bit
  	for ; a.last <= a.high; a.last++ {
  		if a.reserve(a.last) {
  			return a.last, true
  		}
  	}
  
  	// Find preceding free'd pool
  	a.last = a.low
  
  	for ; a.last < wrapped; a.last++ {
  		if a.reserve(a.last) {
  			return a.last, true
  		}
  	}
  
  	return 0, false
  }
docs: // Next reserves and returns the next available number out of the range between
  // low and high.  If no number is available, false is returned.
  //
  // O(N) worst case runtime where N is allocated, but usually O(1) due to a
  // rolling index into the oldest allocation.