private void findOrAllocateMainVftPtr(MsVxtManager vxtManager) {
		if (propagatedSelfBaseVfts.isEmpty()) {
			if (!vftPtrTypeByOffset.isEmpty()) {
				if (vftPtrTypeByOffset.size() > 1) {
					Msg.warn(this, "Unexpected multiple vfts for " + myId);
				}
				myVftPtrOffset = vftPtrTypeByOffset.firstKey();
				VxtPtrInfo info =
					new VxtPtrInfo(myVftPtrOffset, myVftPtrOffset, myId, List.of(myId));
				VirtualFunctionTable myVft = vxtManager.findVft(myId, info.parentage(), 0);
				myVft.setPtrOffsetInClass(info.finalOffset());
				propagatedSelfBaseVfts.add(info);
				finalVftByOffset.put(info.finalOffset(), myVft);
				finalVftPtrInfoByOffset.put(info.accumOffset(), info);
				OwnerParentage op = new OwnerParentage(info.baseId(), info.parentage());
				vfTableIdByOffset.put(info.accumOffset(), op);
				vftOffsetByTableId.put(op, info.accumOffset());
				Member newMember = new Member(ClassUtils.VFPTR, ClassUtils.VXPTR_TYPE, false,
					ClassFieldAttributes.UNKNOWN, myVftPtrOffset.intValue());
				layoutVftPtrMembers.add(newMember);
				myMembers.add(newMember);
			}
		}
		mainVftPtrOffset =
			finalVftPtrInfoByOffset.isEmpty() ? null : finalVftPtrInfoByOffset.firstKey();
	}
Finds or allocates (if needed) the Virtual Function Table "Pointer" within the class
structure
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/CppCompositeType.java