private void storeVbt(ClassID owner, Integer ordinal, VirtualBaseTable vbt) {
		List<VirtualBaseTable> list = vbtsByOwner.get(owner);
		if (list == null) {
			list = new ArrayList<>();
			vbtsByOwner.put(owner, list);
		}
		List<ClassID> parentage = vbt.getParentage();
		for (VirtualBaseTable table : list) {
			if (isEqual(table.getParentage(), parentage)) {
				return; // return without saving
			}
		}
		list.add(vbt);

		// Part of next interim solution
		if (ordinal == null) {
			return;
		}
		Map<Integer, VirtualBaseTable> map = vbtByPtrOrdinalByOwner.get(owner);
		if (map == null) {
			map = new TreeMap<>();
			vbtByPtrOrdinalByOwner.put(owner, map);
		}
		if (map.containsKey(ordinal)) {
			Msg.warn(this, String.format("VBT already exists for owner/ordinal %s/%d ",
				owner.getSymbolPath().toString(), ordinal));
			return;
		}
		map.put(ordinal, vbt);

	}
Creates a virtual function or base table for the mangled symbol and its associated
memory address

@param categoryPath the base category path used for the collection of class-related
types
@param mangled the mangled name of the type
@param address the address associated with the mangled name
@param monitor the task monitor
@return {@code true} if successful
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/classtype/MsVxtManager.java