code: func getAvailableFromCurrent(head *sequence, start, curr, end uint64) (uint64, uint64, error) {
  	var bytePos, bitPos uint64
  	var err error
  	if curr != 0 && curr > start {
  		bytePos, bitPos, err = getFirstAvailable(head, curr)
  		ret := posToOrdinal(bytePos, bitPos)
  		if end < ret || err != nil {
  			goto begin
  		}
  		return bytePos, bitPos, nil
  	}
  
  begin:
  	bytePos, bitPos, err = getFirstAvailable(head, start)
  	ret := posToOrdinal(bytePos, bitPos)
  	if end < ret || err != nil {
  		return invalidPos, invalidPos, ErrNoBitAvailable
  	}
  	return bytePos, bitPos, nil
  }
docs: // getAvailableFromCurrent will look for available ordinal from the current ordinal.
  // If none found then it will loop back to the start to check of the available bit.
  // This can be further optimized to check from start till curr in case of a rollover