code: func (l VirtualDeviceList) SelectByType(deviceType types.BaseVirtualDevice) VirtualDeviceList {
  	dtype := reflect.TypeOf(deviceType)
  	if dtype == nil {
  		return nil
  	}
  	dname := dtype.Elem().Name()
  
  	return l.Select(func(device types.BaseVirtualDevice) bool {
  		t := reflect.TypeOf(device)
  
  		if t == dtype {
  			return true
  		}
  
  		_, ok := t.Elem().FieldByName(dname)
  
  		return ok
  	})
  }
docs: // SelectByType returns a new list with devices that are equal to or extend the given type.