src/vs/workbench/services/hover/browser/hoverWidget.ts/HoverWidget/adjustVerticalHoverPosition
class HoverWidget:	private adjustVerticalHoverPosition(target: TargetRect): void {
		// Do not adjust vertical hover position if y cordiante is provided
		if (this._target.y !== undefined) {
			return;
		}

		// Position hover on top of the target
		if (this._hoverPosition === HoverPosition.ABOVE) {
			// Hover on top is going beyond window
			if (target.top - this._hover.containerDomNode.clientHeight < 0) {
				this._hoverPosition = HoverPosition.BELOW;
			}
		}

		// Position hover below the target
		else if (this._hoverPosition === HoverPosition.BELOW) {
			// Hover on bottom is going beyond window
			if (target.bottom + this._hover.containerDomNode.clientHeight > window.innerHeight) {
				this._hoverPosition = HoverPosition.ABOVE;
			}
		}
	}