public void createTables(DataTypeManager dtm, ClearDataMode mode) {
		for (VirtualBaseTable vbt : vbtsByOwnerParentage.values()) {
			ClassID id = vbt.getOwner();
			Structure table = vbt.createDataType(dtm, ClassUtils.getClassInternalsPath(id));
			if (mode == null) {
				continue;
			}
			if (!(vbt instanceof ProgramVirtualBaseTable pvbt)) {
				continue;
			}
			Address addr = pvbt.getAddress();
			try {
				DataUtilities.createData(program, addr, table, table.getLength(), mode);
			}
			catch (CodeUnitInsertionException e) {
				Msg.warn(this, "Could not place VBT at address: " + addr);
			}
		}
		for (VirtualFunctionTable vft : vftsByOwnerParentage.values()) {
			ClassID id = vft.getOwner();
			Structure table = vft.createDataType(dtm, ClassUtils.getClassInternalsPath(id));
			if (mode == null) {
				continue;
			}
			if (!(vft instanceof ProgramVirtualFunctionTable pvft)) {
				continue;
			}
			Address addr = pvft.getAddress();
			try {
				DataUtilities.createData(program, addr, table, table.getLength(), mode);
			}
			catch (CodeUnitInsertionException e) {
				Msg.warn(this, "Could not place VFT at address: " + addr);
			}
		}
	}
Create the vxtable structures; attempts to place the table type down in memory if
mode is not null and table has an address
@param dtm the data type manager
@param mode clear mode for clearing existing data; if {@code null} will not attempt to place
type in memory
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/classtype/MsVxtManager.java