@Test
	public void testEditUnions9() throws Exception {

		mtf.initialize("notepad", new OriginalProgramModifierListener() {

			@Override
			public void modifyOriginal(ProgramDB program) throws Exception {
				DataTypeManager dtm = program.getDataTypeManager();
				Enum enumm = new EnumDataType(new CategoryPath("/Category1"), "XYZ", 1);
				enumm.add("one", 1);
				enumm.add("two", 2);
				enumm.add("three", 3);
				dtm.addDataType(
					new TypedefDataType(new CategoryPath("/Category1"), "TD_MyEnum", enumm), null);
			}

			@Override
			public void modifyLatest(ProgramDB program) {
				DataTypeManager dtm = program.getDataTypeManager();

				try {
					DataType enumm = dtm.getDataType(new CategoryPath("/Category1"), "XYZ");
					dtm.remove(enumm);

					Union union = (Union) dtm.getDataType(new CategoryPath("/Category1/Category2"),
						"CoolUnion");
					// NOTE: bit field component byte sizing is currently auto-sized and packed within unions
					union.insertBitField(1, IntegerDataType.dataType, 4, "bf1", "latest bf1");
					union.insertBitField(2, IntegerDataType.dataType, 2, "bf2", "latest bf2");
				}
				catch (InvalidDataTypeException e) {
					e.printStackTrace();
					Assert.fail();
				}
			}

			@Override
			public void modifyPrivate(ProgramDB program) {
				DataTypeManager dtm = program.getDataTypeManager();

				try {
					DataType enumm = dtm.getDataType(new CategoryPath("/Category1"), "XYZ");
					assertTrue(enumm instanceof Enum);

					Union union = (Union) dtm.getDataType(new CategoryPath("/Category1/Category2"),
						"CoolUnion");
					// NOTE: bit field component byte sizing is currently auto-sized and packed within unions
					union.insertBitField(1, enumm, 4, "BF1", "my bf1");
					union.insertBitField(2, enumm, 2, "BF2", "my bf2");
				}
				catch (InvalidDataTypeException e) {
					e.printStackTrace();
					Assert.fail();
				}
			}
		});
		executeMerge();

		chooseOption(DataTypeMergeManager.OPTION_MY);// MY bitfields w/ enum

		dismissUnresolvedDataTypesPopup();

		waitForCompletion();

		DataTypeManager dtm = resultProgram.getDataTypeManager();

		// primitive type of byte used in absence of enum
		Union union =
			(Union) dtm.getDataType(new CategoryPath("/Category1/Category2"), "CoolUnion");
		//@formatter:off
		assertEquals("/Category1/Category2/CoolUnion\n" + 
			"pack(disabled)\n" + 
			"Union CoolUnion {\n" + 
			"   0   qword   8      \"\"\n" + 
			"   0   byte:4(4)   1   BF1   \"Failed to apply 'XYZ'; my bf1\"\n" + 
			"   0   byte:2(6)   1   BF2   \"Failed to apply 'XYZ'; my bf2\"\n" + 
			"   0   word   2      \"\"\n" + 
			"   0   undefined * * * * *   4      \"\"\n" + 
			"   0   DLL_Table   96      \"\"\n" + 
			"   0   DLL_Table *32   4      \"\"\n" + 
			"}\n" + 
			"Length: 96 Alignment: 1\n", union.toString());
		//@formatter:on
	}
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