code: func (gb *GraphBuilder) startMonitors() {
  	gb.monitorLock.Lock()
  	defer gb.monitorLock.Unlock()
  
  	if !gb.running {
  		return
  	}
  
  	// we're waiting until after the informer start that happens once all the controllers are initialized.  This ensures
  	// that they don't get unexpected events on their work queues.
  	<-gb.informersStarted
  
  	monitors := gb.monitors
  	started := 0
  	for _, monitor := range monitors {
  		if monitor.stopCh == nil {
  			monitor.stopCh = make(chan struct{})
  			gb.sharedInformers.Start(gb.stopCh)
  			go monitor.Run()
  			started++
  		}
  	}
  	klog.V(4).Infof("started %d new monitors, %d currently running", started, len(monitors))
  }
docs: // startMonitors ensures the current set of monitors are running. Any newly
  // started monitors will also cause shared informers to be started.
  //
  // If called before Run, startMonitors does nothing (as there is no stop channel
  // to support monitor/informer execution).