startWatchingConfigFilesForInferredProjectRoot(info) {
    Debug.assert(info.isScriptOpen());
    this.forEachConfigFileLocation(info, (canonicalConfigFilePath, configFileName) => {
      let configFileExistenceInfo = this.configFileExistenceInfoCache.get(canonicalConfigFilePath);
      if (!configFileExistenceInfo) {
        configFileExistenceInfo = { exists: this.host.fileExists(configFileName) };
        this.configFileExistenceInfoCache.set(canonicalConfigFilePath, configFileExistenceInfo);
      }
      (configFileExistenceInfo.openFilesImpactedByConfigFile || (configFileExistenceInfo.openFilesImpactedByConfigFile = /* @__PURE__ */ new Map())).set(info.path, true);
      configFileExistenceInfo.watcher || (configFileExistenceInfo.watcher = canWatchDirectoryOrFile(getDirectoryPath(canonicalConfigFilePath)) ? this.watchFactory.watchFile(
        configFileName,
        (_filename, eventKind) => this.onConfigFileChanged(canonicalConfigFilePath, eventKind),
        2e3 /* High */,
        this.hostConfiguration.watchOptions,
        WatchType.ConfigFileForInferredRoot
      ) : noopConfigFileWatcher);
    });
  }
This is called by inferred project whenever script info is added as a root

@internal