@Override
	protected DataTypeComponent[] getAllComponents(MemBuffer buf) {
		Program program = buf.getMemory().getProgram();
		DataTypeManager dtm = program.getDataTypeManager();
		DataType rtti0Dt = new RTTI0DataType(dtm);
		DataType rtti0RefDt = getReferenceDataType(program, rtti0Dt);
		DataType rtti3Dt = new RTTI3DataType(dtm);
		DataType rtti3RefDt = getReferenceDataType(program, rtti3Dt);

		DataTypeComponent[] comps = new DataTypeComponent[5];
		comps[0] = new ReadOnlyDataTypeComponent(rtti0RefDt, this, 4, 0, RTTI_0_OFFSET,
			"pTypeDescriptor", is64Bit(program) ? "rtti0Displacement" : "rtti0Pointer");
		comps[1] = new ReadOnlyDataTypeComponent(new DWordDataType(), this, 4, 1,
			NUM_CONTAINED_BASES_OFFSET, "numContainedBases",
			"number of direct bases of this base class");

		// Commented the following out and replaced it with a PMD structure data type.
		// Leaving it in until we are certain we want the actual PMD structure in this dynamic data type.
//		comps[2] = new ReadOnlyDataTypeComponent(new DWordDataType(), this, 4, 2, PMD_MDISP_OFFSET,
//			"PMD.mdisp", "vftable offset");
//		comps[3] = new ReadOnlyDataTypeComponent(new DWordDataType(), this, 4, 3, PMD_PDISP_OFFSET,
//			"PMD.pdisp",
//			"vbtable offset (-1: vftable is at displacement PMD.mdisp inside the class)");
//		comps[4] = new ReadOnlyDataTypeComponent(new DWordDataType(), this, 4, 4, PMD_VDISP_OFFSET,
//			"PMD.vdisp", "Displacement of the base class vftable pointer inside the vbtable");
		Structure pmdDataType = MSDataTypeUtils.getPMDDataType(program);
		comps[2] = new ReadOnlyDataTypeComponent(pmdDataType, this, PMD_LENGTH, 2, PMD_OFFSET,
			"where", "");

		comps[3] = new ReadOnlyDataTypeComponent(new DWordDataType(), this, 4, 3, ATTRIBUTES_OFFSET,
			"attributes", null);
		comps[4] = new ReadOnlyDataTypeComponent(rtti3RefDt, this, 4, 4, RTTI_3_OFFSET,
			"pClassHierarchyDescriptor", is64Bit(program) ? "rtti3Displacement" : "rtti3Pointer");

		return comps;
	}
Creates a dynamic Base Class Descriptor data type.
@param dtm the data type manager for this data type.
Ghidra/Features/Base/src/main/java/ghidra/app/util/datatype/microsoft/RTTI1DataType.java