src/vs/workbench/api/browser/viewsExtensionPoint.ts/ViewsExtensionHandler/constructor
class ViewsExtensionHandler:	constructor(
		@IInstantiationService private readonly instantiationService: IInstantiationService
	) {
		this.viewContainersRegistry = Registry.as<IViewContainersRegistry>(ViewContainerExtensions.ViewContainersRegistry);
		this.viewsRegistry = Registry.as<IViewsRegistry>(ViewContainerExtensions.ViewsRegistry);
		this.handleAndRegisterCustomViewContainers();
		this.handleAndRegisterCustomViews();

		let showTreeHoverCancellation = new CancellationTokenSource();
		KeybindingsRegistry.registerCommandAndKeybindingRule({
			id: 'workbench.action.showTreeHover',
			handler: async (accessor: ServicesAccessor, ...args: any[]) => {
				showTreeHoverCancellation.cancel();
				showTreeHoverCancellation = new CancellationTokenSource();
				const listService = accessor.get(IListService);
				const treeViewsService = accessor.get(ITreeViewsService);
				const hoverService = accessor.get(IHoverService);
				const lastFocusedList = listService.lastFocusedList;
				if (!(lastFocusedList instanceof AsyncDataTree)) {
					return;
				}
				const focus = lastFocusedList.getFocus();
				if (!focus || (focus.length === 0)) {
					return;
				}
				const treeItem = focus[0];

				if (treeItem instanceof ResolvableTreeItem) {
					await treeItem.resolve(showTreeHoverCancellation.token);
				}
				if (!treeItem.tooltip) {
					return;
				}
				const element = treeViewsService.getRenderedTreeElement(treeItem);
				if (!element) {
					return;
				}
				hoverService.showHover({
					content: treeItem.tooltip,
					target: element,
					hoverPosition: HoverPosition.BELOW,
					hideOnHover: false
				}, true);
			},
			weight: KeybindingWeight.WorkbenchContrib,
			primary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.KeyI),
			when: ContextKeyExpr.and(RawCustomTreeViewContextKey, WorkbenchListFocusContextKey)
		});
	}