private boolean initializeTree() {
		if (rootNode != null) {
			return true;
		}

		if (rootItem == null) {
			// no content in the TOC file; help module does not appear in TOC view
			return false;
		}

		OverlayNode newRootNode = new OverlayNode(null, rootItem);
		buildChildren(newRootNode);

		//
		// The parent to children map is cleared as nodes are created.   The map is populated by
		// adding any references to the 'parent' key as they are loaded from the help files.
		// As we build nodes, starting at the root, we will create child nodes for those that
		// reference the 'parent' key.   If the map is empty, then it means we never built a
		// node for the 'parent' key, which means we never found a help file containing the
		// definition for that key.
		//
		if (!parentToChildrenMap.isEmpty()) {
			throw new RuntimeException("Unresolved definitions in tree! - " + parentToChildrenMap);
		}
		rootNode = newRootNode;
		return true;
	}
A class that will take in a group of help directories and create a tree of
help Table of Contents (TOC) items.  Ideally, this tree can be used to create a single
TOC document, or individual TOC documents, one for each help directory (this allows
for better modularity).
<p>
We call this class an <b>overlay</b> tree to drive home the idea that each
help directory's TOC data is put into the tree, with any duplicate paths overlayed
on top of those from other help directories.
Ghidra/Framework/Help/src/main/java/help/OverlayHelpTree.java