private void storeVft(ClassID owner, Address address, VirtualFunctionTable vft) {
		List<VirtualFunctionTable> list = vftsByOwner.get(owner);
		if (list == null) {
			list = new ArrayList<>();
			vftsByOwner.put(owner, list);
		}
		List<ClassID> parentage = vft.getParentage();
		for (VirtualFunctionTable table : list) {
			if (isEqual(table.getParentage(), parentage)) {
				return; // return without saving
			}
		}
		list.add(vft);

		// Part of next interim solution
		Map<Address, VirtualFunctionTable> map = vftByAddressByOwner.get(owner);
		if (map == null) {
			map = new TreeMap<>();
			vftByAddressByOwner.put(owner, map);
		}
		if (map.containsKey(address)) {
			Msg.warn(this, String.format("VFT already exists for owner/address %s/%s",
				owner.getSymbolPath().toString(), address.toString()));
			return;
		}
		map.put(address, vft);

	}
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