private void createFolder(ProgramTreeActionContext context) {
		String errorMessage = null;
		synchronized (root) {
			// sync program so we don't get a deadlock --
			// an event gets generated because of the add module.
			synchronized (program) {
				ProgramNode node = context.getSingleSelectedNode();

				// if the node has not been yet visited, then when the group is added via the
				// command below, the new child node in the parent will not be found
				node.visit();

				ProgramDnDTree tree = context.getTree();
				String name = tree.getNewFolderName();
				String treeName = tree.getTreeName();
				CreateFolderCommand cmd = new CreateFolderCommand(treeName, name, node.getName());
				if (tree.getTool().execute(cmd, program)) {
					ProgramModule m = program.getListing().getModule(treeName, name);
					initiateCellEditor(tree, node, m);
				}
				else {
					errorMessage = cmd.getStatusMsg();
				}
			}
		}
		if (errorMessage != null) {
			Msg.showError(this, null, "Create Folder Failed", errorMessage);
		}

	}
Merge a module with its parent. The module is deleted if it has
no other parents; called by the action listener on a menu.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/programtree/ProgramTreeActionManager.java