private void update(DomainObjectChangedEvent event) {

		if (willReloadProgram(event)) {
			return;
		}
		boolean viewChanged = false;

		for (int i = 0; i < event.numRecords(); i++) {
			DomainObjectChangeRecord rec = event.getChangeRecord(i);

			if (!(rec instanceof ProgramChangeRecord)) {
				continue;
			}
			ProgramChangeRecord record = (ProgramChangeRecord) rec;
			EventType eventType = rec.getEventType();

			if (eventType == ProgramEvent.PROGRAM_TREE_RENAMED) {
				plugin.treeRenamed((String) record.getOldValue(), (String) record.getNewValue());
			}
			else if (eventType == ProgramEvent.GROUP_ADDED) {
				processGroupAdded(record);
			}
			else if (eventType == ProgramEvent.GROUP_REMOVED) {
				processGroupRemoved(record);
			}
			else if (eventType == ProgramEvent.GROUP_RENAMED) {
				processGroupRenamed(record);
			}
			else if (eventType == ProgramEvent.MODULE_REORDERED) {
				processModuleReordered(record);
			}
			else if (eventType == ProgramEvent.GROUP_REPARENTED) {
				processGroupReparented(record);
			}
			else if (eventType == ProgramEvent.FRAGMENT_MOVED) {
				plugin.fragmentMoved();
			}
			else if (eventType == ProgramEvent.MEMORY_BLOCKS_JOINED) {
				viewChanged |= processBlockJoined(record);
			}

			if (viewChanged) {
				tree.fireTreeViewChanged();
			}
		}
	}
Apply the updates that are in the change event.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/programtree/ProgramListener.java