protected void CheckDynamicStructureData(ProgramDB program, long address, String expectedName,
			String[] expectedFieldNames, int expectedDtLength) {

		Listing listing = program.getListing();
		Address dataAddress = addr(program, address);
		Data data = listing.getDataAt(dataAddress);
		DataType dataType = data.getDataType();
		String name = dataType.getName();
		assertEquals(expectedName, name);
		assertEquals(expectedDtLength, data.getLength());

		assertTrue("DataType " + dataType.getName() + " isn't a DynamicDataType.",
			dataType instanceof DynamicDataType);
		DynamicDataType dynamicDt = (DynamicDataType) dataType;
		DumbMemBufferImpl memBuffer = new DumbMemBufferImpl(program.getMemory(), dataAddress);
		assertEquals(expectedFieldNames.length, dynamicDt.getNumComponents(memBuffer));
		DataTypeComponent[] components = dynamicDt.getComponents(memBuffer);
		for (int i = 0; i < components.length; i++) {
			assertEquals(
				"Expected component " + i + " to be named " + expectedFieldNames[i] + " but was " +
					components[i].getFieldName(),
				expectedFieldNames[i], components[i].getFieldName());
		}
	}
Creates a 64 bit program builder that can be used for testing.
@return the program builder for a 64 bit non-VisualStudio x86 PE program.
@throws Exception if it fails to create the ProgramBuilder
Ghidra/Features/MicrosoftCodeAnalyzer/src/test/java/ghidra/app/cmd/data/AbstractCreateDataTypeModelTest.java