code: func newWatcher(ctx context.Context,
  	primaryMAC string,
  	nlWrap netlinkwrapper.NetLink,
  	udevWrap udevwrapper.Udev,
  	state dockerstate.TaskEngineState,
  	stateChangeEvents chan<- statechange.Event) *UdevWatcher {
  
  	derivedContext, cancel := context.WithCancel(ctx)
  	return &UdevWatcher{
  		ctx:            derivedContext,
  		cancel:         cancel,
  		netlinkClient:  nlWrap,
  		udevMonitor:    udevWrap,
  		events:         make(chan *udev.UEvent),
  		agentState:     state,
  		eniChangeEvent: stateChangeEvents,
  		primaryMAC:     primaryMAC,
  	}
  }
docs: // newWatcher is used to nest the return of the UdevWatcher struct