private void doReplaceWithPacked(Structure struct) {
		// assumes components is clear and that alignment characteristics have been set
		DataTypeComponent[] otherComponents = struct.getDefinedComponents();
		for (DataTypeComponent dtc : otherComponents) {
			DataType dt = dtc.getDataType();
			int length = (dt instanceof Dynamic) ? dtc.getLength() : -1;
			doAdd(dt, length, dtc.getFieldName(), dtc.getComment(), false);
		}
	}
Replaces the internal components of this structure with components of the given structure
including packing and alignment settings.

@param dataType the structure to get the component information from.
@throws IllegalArgumentException if any of the component data types are not allowed to
            replace a component in this composite data type. For example, suppose dt1
            contains dt2. Therefore it is not valid to replace a dt2 component with dt1 since
            this would cause a cyclic dependency.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/StructureDataType.java