private void alignAndPackNonBitfieldComponent(InternalDataTypeComponent dataTypeComponent,
			int minOffset) {
		DataType componentDt = dataTypeComponent.getDataType();

		int dtSize = componentDt.isZeroLength() ? 0 : componentDt.getAlignedLength();
		if (dtSize < 0) {
			dtSize = dataTypeComponent.getLength();
		}

		int alignment =
			CompositeAlignmentHelper.getPackedAlignment(componentDt.getAlignment(), packValue);

		int offset;
		if (lastComponent != null && lastComponent.isZeroBitFieldComponent()) {
			// adjust group alignment and offset of zero-length component (properly aligns groupOffset)
			adjustZeroLengthBitField(nextOrdinal - 1, alignment);
			offset = groupOffset;
		}
		else {
			offset = DataOrganizationImpl.getAlignedOffset(alignment, minOffset);
			if (lastComponent == null) {
				groupOffset = offset; // establish corrected group offset after alignment
			}
		}

		updateComponent(dataTypeComponent, nextOrdinal, offset, dtSize, alignment);
	}
Adjust lastComponent which must be a zero-length bitfield and its associated
groupOffset based upon the adjusted alignment.
@param ordinal component ordinal assignment
@param minimumAlignment minimum alignment of component immediately after
the zero-length component
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/AlignedComponentPacker.java