code: func (r *Runner) diffAndUpdateDeps(depsMap map[string]dep.Dependency) {
  	r.dependenciesLock.Lock()
  	defer r.dependenciesLock.Unlock()
  
  	// Diff and up the list of dependencies, stopping any unneeded watchers.
  	log.Printf("[DEBUG] (runner) diffing and updating dependencies")
  
  	for key, d := range r.dependencies {
  		if _, ok := depsMap[key]; !ok {
  			log.Printf("[DEBUG] (runner) %s is no longer needed", d)
  			r.watcher.Remove(d)
  			r.brain.Forget(d)
  		} else {
  			log.Printf("[DEBUG] (runner) %s is still needed", d)
  		}
  	}
  
  	r.dependencies = depsMap
  }
docs: // diffAndUpdateDeps iterates through the current map of dependencies on this
  // runner and stops the watcher for any deps that are no longer required.
  //
  // At the end of this function, the given depsMap is converted to a slice and
  // stored on the runner.