extensions/typescript-language-features/src/languageFeatures/hover.ts/TypeScriptHoverProvider/provideHover
class TypeScriptHoverProvider:	public async provideHover(
		document: vscode.TextDocument,
		position: vscode.Position,
		token: vscode.CancellationToken
	): Promise<vscode.Hover | undefined> {
		const filepath = this.client.toOpenedFilePath(document);
		if (!filepath) {
			return undefined;
		}

		const response = await this.client.interruptGetErr(async () => {
			await this.fileConfigurationManager.ensureConfigurationForDocument(document, token);

			const args = typeConverters.Position.toFileLocationRequestArgs(filepath, position);
			return this.client.execute('quickinfo', args, token);
		});

		if (response.type !== 'response' || !response.body) {
			return undefined;
		}

		return new vscode.Hover(
			this.getContents(document.uri, response.body, response._serverType),
			typeConverters.Range.fromTextSpan(response.body));
	}