void groupAdded(Group group, boolean reparented) {

		synchronized (root) {
			String[] parentNames = group.getParentNames();

			boolean treeChanged = false;

			for (String parentName : parentNames) {
				ProgramModule parent = listing.getModule(treeName, parentName);

				ProgramNode[] nodes = findNodes(parent);
				for (ProgramNode node : nodes) {
					boolean alreadyAdded = false;
					int nchild = node.getChildCount();
					for (int k = 0; k < nchild; k++) {
						ProgramNode child = (ProgramNode) node.getChildAt(k);
						Group childGroup = child.getGroup();
						if (childGroup != null && childGroup.equals(group)) {
							alreadyAdded = true;
							break;
						}

					}
					if (!alreadyAdded) {
						if (node.wasVisited()) {
							int index = node.getChildCount();
							if (reparented) {
								index = getChildIndex(node, group);
							}
							insertGroup(node, group, index);
							treeChanged = true;
						}
					}
				}
			}
			if (treeChanged) {
				// redo the list of nodes
				buildNodeList();
				fireTreeViewChanged();
			}
		}
	}
Called to create a new node for the given group and add it to
all of its parents.
@param group new group to add
@param reparented true if this group is being reparented
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/programtree/ProgramDnDTree.java