public static DataType getDataType(Program program) {

		DataTypeManager dataTypeManager = program.getDataTypeManager();

		CategoryPath categoryPath = new CategoryPath(CATEGORY_PATH);
		StructureDataType struct =
			getAlignedPack4Structure(dataTypeManager, categoryPath, STRUCTURE_NAME);

		// Add the components.
		DWordDataType dWordDataType = new DWordDataType(dataTypeManager);
		struct.add(dWordDataType, "signature", null);
		struct.add(dWordDataType, "offset", "offset of vbtable within class");
		struct.add(dWordDataType, "cdOffset", "constructor displacement offset");

		DataType rtti0RefDt =
			getReferenceDataType(program, TypeDescriptorModel.getDataType(program));
		struct.add(rtti0RefDt, "pTypeDescriptor", "ref to TypeDescriptor (RTTI 0) for class");

		DataType rtti3Dt = Rtti3Model.getDataType(program);
		DataType rtti3RefDt = getReferenceDataType(program, rtti3Dt);
		struct.add(rtti3RefDt, "pClassDescriptor", "ref to ClassHierarchyDescriptor (RTTI 3)");

		TypedefDataType typedefDt =
			new TypedefDataType(categoryPath, DATA_TYPE_NAME, struct, dataTypeManager);

		return MSDataTypeUtils.getMatchingDataType(program, typedefDt);
	}
This gets the CompleteObjectLocator (RTTI 4) structure for the indicated program.
@param program the program which will contain this data type. 
@return the CompleteObjectLocator (RTTI 4) structure.
Ghidra/Features/MicrosoftCodeAnalyzer/src/main/java/ghidra/app/cmd/data/rtti/Rtti4Model.java