code: func (r *PortAllocator) AllocateNext() (int, error) {
  	offset, ok, err := r.alloc.AllocateNext()
  	if err != nil {
  		return 0, err
  	}
  	if !ok {
  		return 0, ErrFull
  	}
  	return r.portRange.Base + offset, nil
  }
docs: // AllocateNext reserves one of the ports from the pool. ErrFull may
  // be returned if there are no ports left.