private VirtualFunctionTable searchVftTree(ClassID owner, List<ClassID> parentage) {

		ParentageNode node = findNode(owner, parentage, vftRoot);
		if (node == null) {
			return null;
		}
		VirtualFunctionTable vfTable = node.getVFTable();
		if (vfTable != null || !parentage.isEmpty()) { // see note below
			return vfTable;
		}
		// Not 100% sure on this... needs more investigation as to why there are mangled strings
		//  that reference the owner in the parentage.  Could there be a situation where there
		//  is one with the parentage and one without?  We are treating them as the same for now
		//  unless we find counter-examples or difficulties with this.
		// Above, we test of parentage.isEmpty, because this special case comes into play only
		//  if it was empty
		node = findNode(owner, List.of(owner), vftRoot);
		if (node == null) {
			return null;
		}
		return node.getVFTable();
	}
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