public static boolean applyDataTypeMembers(Composite composite, boolean packingDisabled,
			boolean isClass, int preferredCompositeSize,
			List<? extends PdbMember> members, Consumer<String> errorConsumer, TaskMonitor monitor)
			throws CancelledException {

		Composite editComposite = composite;

		DefaultCompositeMember rootMember =
			new DefaultCompositeMember(isClass, editComposite, errorConsumer);

		for (PdbMember m : members) {
			monitor.checkCancelled();
			try {
				if (!rootMember.addMember(m, monitor)) {
					return false;
				}
			}
			catch (DataTypeDependencyException e) {
				String message = "Failed to resolve datatype dependency for " +
					composite.getPathName() + ": " + m.getDataTypeName();
				if (errorConsumer != null) {
					errorConsumer.accept(message);
				}
				else {
					Msg.error(DefaultCompositeMember.class, message);
				}
			}
		}

		rootMember.finalizeDataType(preferredCompositeSize, packingDisabled);
		return true;
	}
Buildup an empty composite by applying datatype composite members.
Only those children with a kind of "Member" will be processed.
@param composite empty composite to which members will be added
@param packingDisabled {@code true} to disable any attempted use of packing on this
composite or any of its generated composite dependencies
@param isClass true if composite corresponds to a Class structure, else false
@param preferredCompositeSize preferred size of composite, <= 0 indicates unknown
@param members list of composite members
@param errorConsumer error consumer (may be null)
@param monitor task monitor
@return true if members successfully added to composite
@throws CancelledException if monitor is cancelled
Ghidra/Features/PDB/src/main/java/ghidra/app/util/bin/format/pdb/DefaultCompositeMember.java