src/vs/workbench/api/common/extHostLanguageFeatures.ts/InlayHintsAdapter/_convertInlayHint
class InlayHintsAdapter:	private _convertInlayHint(hint: vscode.InlayHint, id: extHostProtocol.ChainedCacheId): extHostProtocol.IInlayHintDto {

		const disposables = this._disposables.get(id[0]);
		if (!disposables) {
			throw Error('DisposableStore is missing...');
		}

		const result: extHostProtocol.IInlayHintDto = {
			label: '', // fill-in below
			cacheId: id,
			tooltip: typeConvert.MarkdownString.fromStrict(hint.tooltip),
			position: typeConvert.Position.from(hint.position),
			textEdits: hint.textEdits && hint.textEdits.map(typeConvert.TextEdit.from),
			kind: hint.kind && typeConvert.InlayHintKind.from(hint.kind),
			paddingLeft: hint.paddingLeft,
			paddingRight: hint.paddingRight,
		};

		if (typeof hint.label === 'string') {
			result.label = hint.label;
		} else {
			result.label = hint.label.map(part => {
				let result: languages.InlayHintLabelPart = { label: part.value };
				result.tooltip = typeConvert.MarkdownString.fromStrict(part.tooltip);
				if (Location.isLocation(part.location)) {
					result.location = typeConvert.location.from(part.location);
				}
				if (part.command) {
					result.command = this._commands.toInternal(part.command, disposables);
				}
				return result;
			});
		}
		return result;
	}