void (final @NotNull JComponent parentComponent, final int x, final int y, final JComponent focusBackComponent, final @NotNull HintHint hintHint) { myParentComponent = parentComponent; myHintHint = hintHint; LOG.assertTrue(myParentComponent.isShowing()); myEscListener = new MyEscListener(); myComponent.registerKeyboardAction(myEscListener, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); myComponent.registerKeyboardAction(myEscListener, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_FOCUSED); final JLayeredPane layeredPane = parentComponent.getRootPane().getLayeredPane(); Point point = new Point(x, y); myComponent.validate(); HintMode mode; if (myForceShowAsPopup || hintHint.isPopupForced()) { mode = HintMode.REAL_POPUP; } else if (hintHint.isAwtTooltip()) { mode = HintMode.AWT_TOOLTIP; } else if (myForceLightweightPopup) { mode = HintMode.LAYERED_PANE; } else { boolean fitsLayeredPane = fitsLayeredPane(layeredPane, myComponent, new RelativePoint(parentComponent, point), hintHint); mode = fitsLayeredPane ? HintMode.LAYERED_PANE : HintMode.REAL_POPUP; } switch (mode) { case AWT_TOOLTIP -> showAwtTooltip(hintHint); case LAYERED_PANE -> showLayeredPaneTooltip(parentComponent, point, layeredPane); case REAL_POPUP -> showRealPopup(point, hintHint); } }