@Override
	protected DataTypeComponent[] getAllComponents(MemBuffer buf) {
		ArrayList<DataTypeComponent> list = new ArrayList<>();
		Memory memory = buf.getMemory();
		Address addr = buf.getAddress();
		Program program = memory.getProgram();
		DataTypeManager dtm = program.getDataTypeManager();
		DataType rtti1Dt = new RTTI1DataType(dtm);
		boolean is64Bit = is64Bit(program);
		DataType rtti1RefDt = getReferenceDataType(program, rtti1Dt);
		for (int ordinal = 0; addr != null && validRefData(memory, addr); ordinal++) {
			DataTypeComponent comp = new ReadOnlyDataTypeComponent(rtti1RefDt, this, 4, ordinal,
				ordinal * 4, null, is64Bit ? "rtti1Displacement" : "rtti1Pointer");
			list.add(comp);
			addr = addr.add(4); // Add the data type size.
		}
		return list.toArray(new DataTypeComponent[list.size()]);
	}
Creates a dynamic Base Class Array data type.

@param rtti1Count the number of rtti1 refs
@param dtm the data type manager for this data type.
Ghidra/Features/Base/src/main/java/ghidra/app/util/datatype/microsoft/RTTI2DataType.java