code: func (r *Range) AllocateNext() (net.IP, error) {
  	offset, ok, err := r.alloc.AllocateNext()
  	if err != nil {
  		return nil, err
  	}
  	if !ok {
  		return nil, ErrFull
  	}
  	return addIPOffset(r.base, offset), nil
  }
docs: // AllocateNext reserves one of the IPs from the pool. ErrFull may
  // be returned if there are no addresses left.