extensions/typescript-language-features/src/tsServer/spawner.ts/TypeScriptServerSpawner/getCompositeServerType
class TypeScriptServerSpawner:	private getCompositeServerType(
		version: TypeScriptVersion,
		capabilities: ClientCapabilities,
		configuration: TypeScriptServiceConfiguration,
	): CompositeServerType {
		if (!capabilities.has(ClientCapability.Semantic)) {
			return CompositeServerType.SyntaxOnly;
		}

		switch (configuration.separateSyntaxServer) {
			case SeparateSyntaxServerConfiguration.ForAllRequests:
				return CompositeServerType.SyntaxOnly;

			case SeparateSyntaxServerConfiguration.Disabled:
				return CompositeServerType.Single;

			case SeparateSyntaxServerConfiguration.Enabled:
				if (version.apiVersion?.gte(API.v340)) {
					return version.apiVersion?.gte(API.v400)
						? CompositeServerType.DynamicSeparateSyntax
						: CompositeServerType.SeparateSyntax;
				}
				return CompositeServerType.Single;
		}
	}