code: func (d *Discovery) stop() {
  	level.Debug(d.logger).Log("msg", "Stopping file discovery...", "paths", fmt.Sprintf("%v", d.paths))
  
  	done := make(chan struct{})
  	defer close(done)
  
  	fileSDTimeStamp.removeDiscoverer(d)
  
  	// Closing the watcher will deadlock unless all events and errors are drained.
  	go func() {
  		for {
  			select {
  			case <-d.watcher.Errors:
  			case <-d.watcher.Events:
  				// Drain all events and errors.
  			case <-done:
  				return
  			}
  		}
  	}()
  	if err := d.watcher.Close(); err != nil {
  		level.Error(d.logger).Log("msg", "Error closing file watcher", "paths", fmt.Sprintf("%v", d.paths), "err", err)
  	}
  
  	level.Debug(d.logger).Log("msg", "File discovery stopped")
  }
docs: // stop shuts down the file watcher.