private void selectNodeForID(URL url, ID ID) {
			if (ID == null) {
				ID = getClosestID(url);
			}

			TreePath path = tree.getSelectionPath();
			if (isAlreadySelected(path, ID)) {
				return;
			}

			DefaultMutableTreeNode node = getNodeForID(topNode, ID);
			if (node != null) {
				isSelectingNodeInternally = true;
				TreePath newPath = new TreePath(node.getPath());
				tree.setSelectionPath(newPath);
				tree.scrollPathToVisible(newPath);
				isSelectingNodeInternally = false;
				return;
			}

			// See if the given ID is based upon a URL with an anchor.  If that is the case, then
			// there may be a node for the parent file of that URL.  In that case, select the
			// parent file.
			if (url == null) {
				clearSelection();
				return;
			}

			String urlString = url.toExternalForm();
			int anchorIndex = urlString.indexOf('#');
			if (anchorIndex < 0) {
				clearSelection();
				return;
			}

			urlString = urlString.substring(0, anchorIndex);
			try {
				URL newURL = new URL(urlString);
				selectNodeForID(newURL, null);
			}
			catch (MalformedURLException e) {
				// shouldn't happen, as we are starting with a valid URL
				Msg.debug(this,
					"Unexpected error create a help URL from an existing URL: " + urlString, e);
			}
		}
Our hook to install our custom cell renderer.
Ghidra/Framework/Help/src/main/java/help/CustomTOCView.java