code: func (l VirtualDeviceList) newNVMEBusNumber() int32 {
  	var used []int
  
  	for _, d := range l.SelectByType((*types.VirtualNVMEController)(nil)) {
  		num := d.(types.BaseVirtualController).GetVirtualController().BusNumber
  		if num >= 0 {
  			used = append(used, int(num))
  		} // else caller is creating a new vm using NVMEControllerTypes
  	}
  
  	sort.Ints(used)
  
  	for i, n := range nvmeBusNumbers {
  		if i == len(used) || n != used[i] {
  			return int32(n)
  		}
  	}
  
  	return -1
  }
docs: // newNVMEBusNumber returns the bus number to use for adding a new NVME bus device.
  // -1 is returned if there are no bus numbers available.