private void processGroupRemoved(ProgramChangeRecord record) {
		try {
			ProgramModule parent = (ProgramModule) record.getOldValue();
			tree = plugin.getTree(parent.getTreeName());

			if (tree == null) {
				return;
			}
			synchronized (tree.getModel().getRoot()) {
				try {
					parent.getName();
				}
				catch (ConcurrentModificationException e) {
					// parent no longer exists, so should
					// get another event for group removed as
					// the parent is the child being removed...
					return;
				}

				String childName = (String) record.getNewValue();

				//find the node for the module
				ProgramNode[] nodes = tree.findNodes(childName);
				for (ProgramNode node : nodes) {
					tree.groupRemoved(node, parent.getName(), true);
				}
				if (childName.equals(actionManager.getLastGroupPasted())) {
					tree.setBusyCursor(false);
				}
				tree.fireTreeViewChanged();
			}

		}
		catch (ConcurrentModificationException e) {
		}
		catch (Exception e) {
			Msg.showError(this, null, "Error", "Error processing group removed event", e);
		}
	}
A Module or Fragment was renamed, so find all nodes with oldName and update them
with the new name and new Group object.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/programtree/ProgramListener.java