code: func (m *Manager) Run(ctx context.Context, wg *sync.WaitGroup) error {
  	if m.machine == nil {
  		return fmt.Errorf("manager requires a machine to manage")
  	}
  
  	err := m.configureWatchers()
  	if err != nil {
  		return errors.Wrap(err, "could not configure watchers")
  	}
  
  	for _, watcher := range m.watchers {
  		wg.Add(1)
  		go watcher.Run(ctx, wg)
  
  		if watcher.AnnounceInterval() > 0 {
  			wg.Add(1)
  			go m.announceWatcherState(ctx, wg, watcher)
  		}
  	}
  
  	return nil
  }
docs: // Run starts all the defined watchers and periodically announce
  // their state based on AnnounceInterval