private boolean updateComposite(int currentNumComponents, int currentLength,
			int currentAlignment, boolean setLastChangeTime) {
		boolean compositeChanged = false;
		if (currentNumComponents >= 0 &&
			(currentNumComponents != numComponents || currentNumComponents != record
					.getIntValue(CompositeDBAdapter.COMPOSITE_NUM_COMPONENTS_COL))) {
			numComponents = currentNumComponents;
			record.setIntValue(CompositeDBAdapter.COMPOSITE_NUM_COMPONENTS_COL, numComponents);
			setLastChangeTime = true;
			compositeChanged = true;
		}
		if (currentLength >= 0 && (currentLength != structLength ||
			currentLength != record.getIntValue(CompositeDBAdapter.COMPOSITE_LENGTH_COL))) {
			structLength = currentLength;
			record.setIntValue(CompositeDBAdapter.COMPOSITE_LENGTH_COL, structLength);
			compositeChanged = true;
		}
		if (currentAlignment >= 0 && (currentAlignment != structAlignment ||
			currentAlignment != record.getIntValue(CompositeDBAdapter.COMPOSITE_ALIGNMENT_COL))) {
			structAlignment = currentAlignment;
			record.setIntValue(CompositeDBAdapter.COMPOSITE_ALIGNMENT_COL, structAlignment);
			compositeChanged = true;
		}
		if (compositeChanged) {
			try {
				compositeAdapter.updateRecord(record, setLastChangeTime);
				return true;
			}
			catch (IOException e) {
				dataMgr.dbError(e);
			}
		}
		return false;
	}
Updates non-packed component ordinals and numComponents.
If numComponents changes record update will be performed
with new timestamp.
@return true if change detected else false
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/StructureDB.java