private VirtualBaseTable getMainVbt(MsVxtManager vxtManager) throws PdbException {
		if (!finalVbtPtrInfoByOffset.isEmpty()) {
			VxtPtrInfo firstVbtPtrInfo = finalVbtPtrInfoByOffset.firstEntry().getValue();
			VirtualBaseTable vbt = vxtManager.findPrimaryVbt(myId, firstVbtPtrInfo.parentage());
			if (vbt instanceof ProgramVirtualBaseTable pvbt) {
				return pvbt;
			}
			else if (vbt instanceof PlaceholderVirtualBaseTable plvbt) {
				List<VirtualLayoutBaseClass> reorderedVirtualBases = new ArrayList<>();
				for (ClassID bId : depthFirstVirtualBases().keySet()) {
					for (VirtualLayoutBaseClass base : virtualLayoutBaseClasses) {
						CppCompositeType baseType = base.getBaseClassType();
						ClassID id = baseType.getClassId();
						if (id.equals(bId)) {
							reorderedVirtualBases.add(base);
						}
					}
				}
				int off = selfBaseType.getAlignedLength();
				for (VirtualLayoutBaseClass base : reorderedVirtualBases) {
					CppCompositeType baseType = base.getBaseClassType();
					int basePtrOff = base.getBasePointerOffset();
					Composite baseComposite = baseType.getComposite();
					off = DataOrganizationImpl.getAlignedOffset(baseComposite.getAlignment(), off);
					addPlaceholderVirtualBaseTableEntry(plvbt, vxtManager, base, off - basePtrOff);
					if (!baseType.hasZeroBaseSize) {
						off += baseType.getSelfBaseType().getLength();
					}
				}
				return plvbt;
			}
			else {
				if (vbt != null) {
					throw new PdbException(
						"VBT type not expected: " + vbt.getClass().getSimpleName());
				}
			}
		}
		return null;
	}
Provides the Virtual Base Table to be used for placing virtual bases of this class
@throws PdbException upon unrecognized vbt type
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/CppCompositeType.java