src/vs/platform/files/node/watcher/unix/chokidarWatcherService.ts/ChokidarWatcherService/setRoots
class ChokidarWatcherService:	async setRoots(requests: IWatcherRequest[]): Promise<void> {
		const watchers = new Map<string, IWatcher>();
		const newRequests: string[] = [];

		const requestsByBasePath = normalizeRoots(requests);

		// evaluate new & remaining watchers
		for (const basePath in requestsByBasePath) {
			const watcher = this.watchers.get(basePath);
			if (watcher && isEqualRequests(watcher.requests, requestsByBasePath[basePath])) {
				watchers.set(basePath, watcher);
				this.watchers.delete(basePath);
			} else {
				newRequests.push(basePath);
			}
		}

		// stop all old watchers
		for (const [, watcher] of this.watchers) {
			await watcher.stop();
		}

		// start all new watchers
		for (const basePath of newRequests) {
			const requests = requestsByBasePath[basePath];
			watchers.set(basePath, this.watch(basePath, requests));
		}

		this.watchers = watchers;
	}