private void createModule(ProgramModule parent, String name, ProgramModule sourceModule,
			ArrayList<String> fragmentNameList) {

		ProgramModule m = null;
		try {
			m = parent.createModule(name);
		}
		catch (DuplicateNameException e) {
			// module exists
			m = resultProgram.getListing().getModule(parent.getTreeName(), name);
			try {
				parent.add(m);
			}
			catch (CircularDependencyException exc) {
				throw new AssertException("Could not add " + name + " to " + parent.getName() +
					": " + e);
			}
			catch (DuplicateGroupException exc) {
				// ok - module was already added
			}
		}
		createModules(m, sourceModule, fragmentNameList);
	}
Called when we need to know which tree changed (not enough to know
that the structures are different).
@param root1 root of the original program 
@param root2 root for either the source tree or the destination tree
@return true if there was no original root, OR the modification
numbers for the original tree and tree containing root do not match
Ghidra/Features/Base/src/main/java/ghidra/app/merge/tree/ProgramTreeMergeManager.java