@Before
	public void setUp() throws Exception {

		ProgramTestArtifacts programTestArtifacts;
		ClassTypeManager ctm;

		egray832Creator = new Egray832ProgramCreator();
		programTestArtifacts = egray832Creator.create();
		egray832Program = programTestArtifacts.program();
		egray832Pdb = programTestArtifacts.pdb();
		egray832AddressesByMangled = programTestArtifacts.addressesByMangled();
		ctm = new ClassTypeManager(egray832Program.getDataTypeManager());
		egray832VxtManager = new MsVxtManager(ctm, egray832Program);
		egray832VxtManager.createVirtualTables(CategoryPath.ROOT, egray832AddressesByMangled, log,
			monitor);

		int txID = egray832Program.startTransaction("Applying vxt symbols.");
		boolean commit = false;
		try {
			egray832Pdb.applySymbols(egray832Program);
			commit = true;
		}
		finally {
			egray832Program.endTransaction(txID, commit);
		}

		egray832VxtManagerNoProgram = new MsVxtManager(ctm, null);

		//=====

		egray864Creator = new Egray864ProgramCreator();
		programTestArtifacts = egray864Creator.create();
		egray864Program = programTestArtifacts.program();
		egray864Pdb = programTestArtifacts.pdb();
		egray864AddressesByMangled = programTestArtifacts.addressesByMangled();
		ctm = new ClassTypeManager(egray864Program.getDataTypeManager());
		egray864VxtManager = new MsVxtManager(ctm, egray864Program);
		egray864VxtManager.createVirtualTables(CategoryPath.ROOT, egray864AddressesByMangled, log,
			monitor);

		txID = egray864Program.startTransaction("Applying vxt symbols.");
		commit = false;
		try {
			egray864Pdb.applySymbols(egray864Program);
			commit = true;
		}
		finally {
			egray864Program.endTransaction(txID, commit);
		}

		egray864VxtManagerNoProgram = new MsVxtManager(ctm, null);

		//=====

		cfb432Creator = new Cfb432ProgramCreator();
		programTestArtifacts = cfb432Creator.create();
		cfb432Program = programTestArtifacts.program();
		cfb432Pdb = programTestArtifacts.pdb();
		cfb432AddressesByMangled = programTestArtifacts.addressesByMangled();
		ctm = new ClassTypeManager(cfb432Program.getDataTypeManager());
		cfb432VxtManager = new MsVxtManager(ctm, cfb432Program);
		cfb432VxtManager.createVirtualTables(CategoryPath.ROOT, cfb432AddressesByMangled, log,
			monitor);

		txID = cfb432Program.startTransaction("Applying vxt symbols.");
		commit = false;
		try {
			cfb432Pdb.applySymbols(cfb432Program);
			commit = true;
		}
		finally {
			cfb432Program.endTransaction(txID, commit);
		}

		cfb432VxtManagerNoProgram = new MsVxtManager(ctm, null);

		//=====

		cfb464Creator = new Cfb464ProgramCreator();
		programTestArtifacts = cfb464Creator.create();
		cfb464Program = programTestArtifacts.program();
		cfb464Pdb = programTestArtifacts.pdb();
		cfb464AddressesByMangled = programTestArtifacts.addressesByMangled();
		ctm = new ClassTypeManager(cfb464Program.getDataTypeManager());
		cfb464VxtManager = new MsVxtManager(ctm, cfb464Program);
		cfb464VxtManager.createVirtualTables(CategoryPath.ROOT, cfb464AddressesByMangled, log,
			monitor);

		txID = cfb464Program.startTransaction("Applying vxt symbols.");
		commit = false;
		try {
			cfb464Pdb.applySymbols(cfb464Program);
			commit = true;
		}
		finally {
			cfb464Program.endTransaction(txID, commit);
		}

		cfb464VxtManagerNoProgram = new MsVxtManager(ctm, null);

		//=====

		vftm32Creator = new Vftm32ProgramCreator();
		programTestArtifacts = vftm32Creator.create();
		vftm32Program = programTestArtifacts.program();
		vftm32Pdb = programTestArtifacts.pdb();
		vftm32AddressesByMangled = programTestArtifacts.addressesByMangled();
		ctm = new ClassTypeManager(vftm32Program.getDataTypeManager());
		vftm32VxtManager = new MsVxtManager(ctm, vftm32Program);
		vftm32VxtManager.createVirtualTables(CategoryPath.ROOT, vftm32AddressesByMangled, log,
			monitor);

		txID = vftm32Program.startTransaction("Applying vxt symbols.");
		commit = false;
		try {
			vftm32Pdb.applySymbols(vftm32Program);
			commit = true;
		}
		finally {
			vftm32Program.endTransaction(txID, commit);
		}

		vftm32VxtManagerNoProgram = new MsVxtManager(ctm, null);

		//=====

		vftm64Creator = new Vftm64ProgramCreator();
		programTestArtifacts = vftm64Creator.create();
		vftm64Program = programTestArtifacts.program();
		vftm64Pdb = programTestArtifacts.pdb();
		vftm64AddressesByMangled = programTestArtifacts.addressesByMangled();
		ctm = new ClassTypeManager(vftm64Program.getDataTypeManager());
		vftm64VxtManager = new MsVxtManager(ctm, vftm64Program);
		vftm64VxtManager.createVirtualTables(CategoryPath.ROOT, vftm64AddressesByMangled, log,
			monitor);

		txID = vftm64Program.startTransaction("Applying vxt symbols.");
		commit = false;
		try {
			vftm64Pdb.applySymbols(vftm64Program);
			commit = true;
		}
		finally {
			vftm64Program.endTransaction(txID, commit);
		}

		vftm64VxtManagerNoProgram = new MsVxtManager(ctm, null);

		//=====

	}
Unit tests for the {@link CppCompositeType}.
<p>20250403: Modified to use ProgramCreator.  However, this class still has vestiges of
code to try to test "compiling" classes (syntactic representation to compiled representation),
and we don't yet know what this is going to look like later.  Thus, much of the code for
creating CppCompositeTypes is still found in this class and is somewhat duplicative with what
we have put into the ProgramCreator classes for the MockPdbs.  For now, leaving this duplication
until we determine how we will extract/move the syntactic work
Ghidra/Features/PDB/src/test/java/ghidra/app/util/pdb/pdbapplicator/CppCompositeTypeTest.java