src/vs/workbench/contrib/remote/browser/remoteExplorer.ts/ProcAutomaticPortForwarding/handleCandidateUpdate
class ProcAutomaticPortForwarding:	private async handleCandidateUpdate(removed: Map<string, { host: string, port: number }>) {
		const removedPorts: number[] = [];
		for (const removedPort of removed) {
			const key = removedPort[0];
			const value = removedPort[1];
			if (this.autoForwarded.has(key)) {
				await this.remoteExplorerService.close(value);
				this.autoForwarded.delete(key);
				removedPorts.push(value.port);
			} else if (this.notifiedOnly.has(key)) {
				this.notifiedOnly.delete(key);
				removedPorts.push(value.port);
			} else if (this.initialCandidates.has(key)) {
				this.initialCandidates.delete(key);
			}
		}

		if (removedPorts.length > 0) {
			await this.notifier.hide(removedPorts);
		}

		const tunnels = await this.forwardCandidates();
		if (tunnels) {
			await this.notifier.doAction(tunnels);
		}
	}