public VirtualFunctionTable findVft(ClassID owner, List<ClassID> parentage, Integer ordinal) {
		OwnerParentage op = new OwnerParentage(owner, parentage);
		VirtualFunctionTable vft = vftsByOwnerParentage.get(op);
		if (vft != null) {
			return vft;
		}
		vft = getVftByAddressOrdinal(owner, ordinal);
		if (vft == null) {
			vft = searchVftTree(owner, parentage);
			if (vft == null) {
				vft = new PlaceholderVirtualFunctionTable(owner, parentage);
			}
		}
		vftsByOwnerParentage.put(op, vft);
		storeVft(owner, ordinal, vft);
		return vft;
	}
Finds the putative {@link VirtualFunctionTable} in memory requested for the owning class
and the specified parentage
@param owner the owning class of the table
@param parentage the parentage for the desired table.  The parentage must start with the
parent that contains the pointer to the table and should include the ordered lineage from
that class through all of its decendents to the owner, excluding the owner
@param ordinal ordinal of table for owner as sorted by address
@return the table
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/classtype/MsVxtManager.java