src/vs/workbench/contrib/debug/browser/debugHover.ts/DebugHoverWidget/showAt
class DebugHoverWidget:	async showAt(position: Position, focus: boolean): Promise<void> {
		this.showCancellationSource?.cancel();
		const cancellationSource = this.showCancellationSource = new CancellationTokenSource();
		const session = this.debugService.getViewModel().focusedSession;

		if (!session || !this.editor.hasModel()) {
			this.hide();
			return;
		}

		const result = await this.debugHoverComputer.compute(position, cancellationSource.token);
		if (this.isVisible() && !result.rangeChanged) {
			return;
		}

		if (!result.range || cancellationSource.token.isCancellationRequested) {
			this.hide();
			return;
		}

		const expression = await this.debugHoverComputer.evaluate(session);
		if (cancellationSource.token.isCancellationRequested || !expression || (expression instanceof Expression && !expression.available)) {
			this.hide();
			return;
		}

		this.highlightDecorations.set([{
			range: result.range,
			options: DebugHoverWidget._HOVER_HIGHLIGHT_DECORATION_OPTIONS
		}]);

		return this.doShow(result.range.getStartPosition(), expression, focus);
	}