private void createClassLayout(MsVxtManager vxtManager, ObjectOrientedClassLayout layoutOptions,
			TaskMonitor monitor) throws CancelledException, PdbException {
		List<ClassPdbMember> selfBaseMembers = getSelfBaseClassMembers();
		mainVft = getMainVft(vxtManager);
		if (mainVft != null) {
			updateMainVft();
		}
		if (getNumLayoutVirtualBaseClasses() == 0) {
			if (!DefaultCompositeMember.applyDataTypeMembers(composite, false, false, size,
				selfBaseMembers, msg -> Msg.warn(this, msg), monitor)) {
				clearComponents(composite);
			}
			selfBaseType = composite;
		}
		else {
			createSelfBase();
			if (!DefaultCompositeMember.applyDataTypeMembers(selfBaseType, false, false, 0,
				selfBaseMembers, msg -> Msg.warn(this, msg), monitor)) {
				clearComponents(composite);
			}
			ClassPdbMember directClassPdbMember =
				new ClassPdbMember("", selfBaseType, false, 0, SELF_BASE_COMMENT);

			mainVbt = getMainVbt(vxtManager);
			if (mainVbt != null) {
				updateMainVbt();
				// If there was any updating to do for secondary tables, we would do it here.
				//  Something to consider in the future
//				for (VXT t : finalVbtByOffset.values()) {
//					VirtualBaseTable vbt = (VirtualBaseTable) t;
//					updateVbtFromSelf(vbt);
//				}
			}

			TreeMap<Long, ClassPdbMember> allMembers = new TreeMap<>();
			allMembers.put(0L, directClassPdbMember);
			TreeMap<Long, ClassPdbMember> virtualBasePdbMembers =
				processVirtualBaseClasses(vxtManager, layoutOptions);
			allMembers.putAll(virtualBasePdbMembers);
			List<ClassPdbMember> am = new ArrayList<>(allMembers.values());

			if (!DefaultCompositeMember.applyDataTypeMembers(composite, false, false, size,
				am, msg -> Msg.warn(this, msg), monitor)) {
				clearComponents(composite);
			}
		}

		for (VXT t : finalVftByOffset.values()) {
			VirtualFunctionTable vft = (VirtualFunctionTable) t;
			updateVftFromSelf(vft);
		}

	}
Lays out the composite and possible self-base for this class
@param vxtManager the vxtManager
@param monitor the monitor
@throws CancelledException upon user cancellation
@throws PdbException up issue with finding the vbt or assigning offsets to virtual bases
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/CppCompositeType.java