private void checkForTooManyNodes() {

		SymbolTreeRootNode root = (SymbolTreeRootNode) getRoot();
		if (root == null) {
			return;
		}
		int reOrgLimit = root.getReorganizeLimit();
		if (getChildCount() < reOrgLimit) {
			return;
		}

		// If we have too many nodes, find the root category node and close it
		GTreeNode parent = getParent();
		while (parent != null) {
			if (parent instanceof SymbolCategoryNode) {
				GTree tree = getTree();
				// also clear the selection so that it doesn't reopen the category needlessly
				tree.clearSelectionPaths();
				tree.runTask(new GTreeCollapseAllTask(tree, parent));
				return;
			}
			parent = parent.getParent();
		}
	}
Inserts the given node into this organization node which is different than calling the
{@link #addNode(GTreeNode)} method, which is used during construction.  This method knows
how to recursively find the correct {@link OrganizationNode} node into which the given
node should be inserted.

@param newNode the node to insert.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/symboltree/nodes/OrganizationNode.java