private void allocateStructureMembers(Structure struct) {

			int offset = allocationByteOffset;
			offset += isBigEndian() ? leftChopBytes : rightChopBytes;

			int allocationEndOffset = offset + allocationBytes - 1;

			int numComponents = struct.getNumComponents();
			DataTypeComponent component = struct.getComponentContaining(offset);
			while (component != null) {
				if (component.getOffset() > allocationEndOffset) {
					break;
				}
				if (component.getOrdinal() != editOrdinal) {
					BitFieldPlacement placement = new BitFieldPlacement(component);
					if (placement.zeroBitField) {
						allocateZeroBitField(component, placement.rightBit);
					}
					else {
						allocateBits(component, placement.leftBit, placement.rightBit,
							placement.truncateLeft, placement.truncateRight);
					}
				}
				int nextOrdinal = component.getOrdinal() + 1;
				if (nextOrdinal >= numComponents) {
					break;
				}
				component = struct.getComponent(nextOrdinal);
			}
		}
Allocate {@link #bitAttributes} for all structure members which reside
within the byte range covered by {@link #allocationBytes}.
@param struct structure whose component bit attributes should be
              computed.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/BitFieldPlacementComponent.java