@SuppressWarnings("deprecation")
  private void doELTooltipTest(String prefix, String value, String compare) {
    String documentContent = caTest.getDocument().get();
    int start = (documentContent == null ? -1 : documentContent.indexOf(prefix));
    assertFalse("Required node '" + prefix + "' not found in document", (start == -1));
    int offsetToTest = start + prefix.length();

    ITextHover hover = getTextHover(caTest.getViewer(), offsetToTest - 1);
    assertNotNull("Hover not found for value: '" + value + "'", hover);

    String hoverText = null;
    if (hover instanceof ITextHoverExtension2) {
      Object hoverInfo2 =
          ((ITextHoverExtension2) hover)
              .getHoverInfo2(
                  caTest.getViewer(), hover.getHoverRegion(caTest.getViewer(), offsetToTest));
      hoverText = String.valueOf(hoverInfo2);
    } else {
      hoverText =
          ((ITextHover) hover)
              .getHoverInfo(
                  caTest.getViewer(), hover.getHoverRegion(caTest.getViewer(), offsetToTest));
    }
    String hoverTextValue = HTML2TextUtil.html2Text(hoverText);
    String compareValue = HTML2TextUtil.html2Text(compare);
    // System.out.println("Hover Text: [" + hoverTextValue + "]\nExpected Value: [" + compareValue +
    // "]\nEqual: " + compareValue.equalsIgnoreCase(hoverTextValue) + "\n");
    assertTrue(
        "Hover exists but its value is not expected:\nHover Text: ["
            + hoverTextValue
            + "]\nExpected Value: ["
            + compareValue
            + "]",
        compareValue.equalsIgnoreCase(hoverTextValue));
  }
    /**
     * Tries to make a text hover focusable (or "sticky").
     *
     * @param sourceViewer the source viewer to display the hover over
     * @param textHover the hover to make focusable
     * @return <code>true</code> if successful, <code>false</code> otherwise
     */
    @SuppressWarnings("deprecation")
    private boolean makeTextHoverFocusable(ISourceViewer sourceViewer, ITextHover textHover) {
      Point hoverEventLocation = ((ITextViewerExtension2) sourceViewer).getHoverEventLocation();
      int offset =
          computeOffsetAtLocation(sourceViewer, hoverEventLocation.x, hoverEventLocation.y);
      if (offset == -1) return false;

      try {
        IRegion hoverRegion = textHover.getHoverRegion(sourceViewer, offset);
        if (hoverRegion == null) return false;

        String hoverInfo = textHover.getHoverInfo(sourceViewer, hoverRegion);

        IInformationControlCreator controlCreator = null;
        if (textHover instanceof IInformationProviderExtension2)
          controlCreator =
              ((IInformationProviderExtension2) textHover).getInformationPresenterControlCreator();

        IInformationProvider informationProvider =
            new InformationProvider(hoverRegion, hoverInfo, controlCreator);

        fInformationPresenter.setOffset(offset);
        fInformationPresenter.setAnchor(AbstractInformationControlManager.ANCHOR_BOTTOM);
        fInformationPresenter.setMargins(
            6, 6); // default values from AbstractInformationControlManager
        String contentType =
            TextUtilities.getContentType(
                sourceViewer.getDocument(), AutoconfPartitionScanner.AUTOCONF_MACRO, offset, true);
        fInformationPresenter.setInformationProvider(informationProvider, contentType);
        fInformationPresenter.showInformation();

        return true;

      } catch (BadLocationException e) {
        return false;
      }
    }