code: func (gb *GraphBuilder) Run(stopCh <-chan struct{}) {
  	klog.Infof("GraphBuilder running")
  	defer klog.Infof("GraphBuilder stopping")
  
  	// Set up the stop channel.
  	gb.monitorLock.Lock()
  	gb.stopCh = stopCh
  	gb.running = true
  	gb.monitorLock.Unlock()
  
  	// Start monitors and begin change processing until the stop channel is
  	// closed.
  	gb.startMonitors()
  	wait.Until(gb.runProcessGraphChanges, 1*time.Second, stopCh)
  
  	// Stop any running monitors.
  	gb.monitorLock.Lock()
  	defer gb.monitorLock.Unlock()
  	monitors := gb.monitors
  	stopped := 0
  	for _, monitor := range monitors {
  		if monitor.stopCh != nil {
  			stopped++
  			close(monitor.stopCh)
  		}
  	}
  
  	// reset monitors so that the graph builder can be safely re-run/synced.
  	gb.monitors = nil
  	klog.Infof("stopped %d of %d monitors", stopped, len(monitors))
  }
docs: // Run sets the stop channel and starts monitor execution until stopCh is
  // closed. Any running monitors will be stopped before Run returns.