@Test
	public void testEditUnions6() throws Exception {

		mtf.initialize("notepad", new ProgramModifierListener() {
			@Override
			public void modifyLatest(ProgramDB program) {
				DataTypeManager dtm = program.getDataTypeManager();
				Structure s = (Structure) dtm.getDataType(CategoryPath.ROOT, "DLL_Table");
				dtm.remove(s);
				DataType dt =
					dtm.getDataType(new CategoryPath("/Category1/Category2"), "CoolUnion");
				dtm.remove(dt);
			}

			@Override
			public void modifyPrivate(ProgramDB program) {
				DataTypeManager dtm = program.getDataTypeManager();
				Union union =
					(Union) dtm.getDataType(new CategoryPath("/Category1/Category2"), "CoolUnion");

				try {
					DataTypeComponent dtc = union.add(new FloatDataType());
					dtc.setComment("my comments");
					dtc.setFieldName("Float Field");
					Enum enumm = new EnumDataType(new CategoryPath("/Category1"), "MyEnum", 1);
					enumm.add("one", 1);
					enumm.add("two", 2);
					enumm.add("three", 3);
					TypeDef td =
						new TypedefDataType(new CategoryPath("/Category1"), "TD_MyEnum", enumm);
					union.add(td);

					Structure s = (Structure) dtm.getDataType(CategoryPath.ROOT, "DLL_Table");
					s.add(new WordDataType());

					union =
						new UnionDataType(new CategoryPath("/Category1/Category2"), "AnotherUnion");
					union.add(s);
					union.add(new ByteDataType());
					dtm.addDataType(union, DataTypeConflictHandler.DEFAULT_HANDLER);
				}
				catch (DuplicateNameException e) {
					Assert.fail("Got Duplicate name exception!");
				}
			}
		});
		executeMerge();

		chooseOption(DataTypeMergeManager.OPTION_ORIGINAL);// original DLL_Table 

		chooseOption(DataTypeMergeManager.OPTION_MY);// my CoolUnion

		waitForCompletion();

		DataTypeManager dtm = resultProgram.getDataTypeManager();

		Enum enumm = (Enum) dtm.getDataType(new CategoryPath("/Category1"), "MyEnum");
		assertNotNull(enumm);

		TypeDef td = (TypeDef) dtm.getDataType(new CategoryPath("/Category1"), "TD_MyEnum");
		assertNotNull(td);

		// CoolUnion should not be null
		Union union =
			(Union) dtm.getDataType(new CategoryPath("/Category1/Category2"), "CoolUnion");
		assertNotNull(union);
		//@formatter:off
		assertEquals("/Category1/Category2/CoolUnion\n" + 
			"pack(disabled)\n" + 
			"Union CoolUnion {\n" + 
			"   0   qword   8      \"\"\n" + 
			"   0   word   2      \"\"\n" + 
			"   0   undefined * * * * *   4      \"\"\n" + 
			"   0   DLL_Table   96      \"\"\n" + 
			"   0   DLL_Table *32   4      \"\"\n" + 
			"   0   float   4   Float_Field   \"my comments\"\n" + 
			"   0   TD_MyEnum   1      \"\"\n" + 
			"}\n" + 
			"Length: 96 Alignment: 1\n", union.toString());
		//@formatter:on;

		// DLL_Table should not be null
		Structure dll = (Structure) dtm.getDataType(CategoryPath.ROOT, "DLL_Table");
		assertNotNull(dll);
		//@formatter:off
		assertEquals("/DLL_Table\n" + 
			"pack(disabled)\n" + 
			"Structure DLL_Table {\n" + 
			"   0   string   13   COMDLG32   \"\"\n" + 
			"   13   string   12   SHELL32   \"\"\n" + 
			"   25   string   11   MSVCRT   \"\"\n" + 
			"   36   string   13   ADVAPI32   \"\"\n" + 
			"   49   string   13   KERNEL32   \"\"\n" + 
			"   62   string   10   GDI32   \"\"\n" + 
			"   72   string   11   USER32   \"\"\n" + 
			"   83   string   13   WINSPOOL32   \"\"\n" + 
			"}\n" + 
			"Length: 96 Alignment: 1\n", dll.toString());
		//@formatter:on;

		checkConflictCount(0);
	}
Current Result for /Category5/Test

				Unaligned
				Structure Test {
				   4   int:2(6)   1   bf1   ""
				   4   int:2(4)   1   bf2   ""
				   5   word   2   null   ""
				   7   qword   8   null   ""
				}
				Size = 15   Actual Alignment = 1
	
See assertion below for preferred result
Ghidra/Features/Base/src/test.slow/java/ghidra/app/merge/datatypes/DataTypeMerge3Test.java