src/vs/platform/remote/common/tunnel.ts/AbstractTunnelService/createWithProvider
class AbstractTunnelService:	protected createWithProvider(tunnelProvider: ITunnelProvider, remoteHost: string, remotePort: number, localPort: number | undefined, elevateIfNeeded: boolean, isPublic: boolean, protocol?: string): Promise<RemoteTunnel | undefined> | undefined {
		this.logService.trace(`ForwardedPorts: (TunnelService) Creating tunnel with provider ${remoteHost}:${remotePort} on local port ${localPort}.`);

		const preferredLocalPort = localPort === undefined ? remotePort : localPort;
		const creationInfo = { elevationRequired: elevateIfNeeded ? isPortPrivileged(preferredLocalPort) : false };
		const tunnelOptions: TunnelOptions = { remoteAddress: { host: remoteHost, port: remotePort }, localAddressPort: localPort, public: isPublic, protocol };
		const tunnel = tunnelProvider.forwardPort(tunnelOptions, creationInfo);
		this.logService.trace('ForwardedPorts: (TunnelService) Tunnel created by provider.');
		if (tunnel) {
			this.addTunnelToMap(remoteHost, remotePort, tunnel);
		}
		return tunnel;
	}