private VirtualBaseTable updateVbt(VxtManager vxtManager, ClassID baseId, VxtPtrInfo info,
			VxtPtrInfo parentInfo) {
		if (!(vxtManager instanceof MsVxtManager mvxtManager)) {
			// error
			return null;
		}
		ClassID parentId;
		List<ClassID> parentParentage;
		if (parentInfo == null) {
			parentId = info.baseId();
			List<ClassID> parentage = info.parentage();
			parentParentage = parentage.subList(0, parentage.size() - 1);
		}
		else {
			parentId = baseId;
			parentParentage = parentInfo.parentage();
		}

		Long finalOffset = info.finalOffset();
		VirtualBaseTable myVbt = (VirtualBaseTable) finalVbtByOffset.get(finalOffset);
		if (myVbt == null) {
			Integer ordinal = getOrdinalOfKey(finalVbtByOffset, finalOffset);
			myVbt = mvxtManager.findVbt(myId, info.parentage(), ordinal);
			if (myVbt == null) {
				return null;
			}
			finalVbtByOffset.put(finalOffset, myVbt);
		}

		myVbt.setPtrOffsetInClass(finalOffset);
		VirtualBaseTable parentVbt = mvxtManager.findVbt(parentId, parentParentage, null);
		if (parentVbt == null) {
			// this is an error
			return null;
		}
		for (Map.Entry<Integer, VirtualBaseTableEntry> mapEntry : parentVbt.getEntriesByTableIndex()
				.entrySet()) {
			int tableOffset = mapEntry.getKey();
			VBTableEntry e = mapEntry.getValue();
			myVbt.addEntry(tableOffset, e.getClassId());
		}

		return myVbt;
	}
Updates vftable entries with values from this class that override those of parent classes
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/CppCompositeType.java