class StructureDB extends CompositeDB implements Structure {

	@Override
	public void dataTypeSizeChanged(DataType dt) {
		lock.acquire();
		try {
			checkDeleted();
			if (isInternallyAligned()) {
				adjustInternalAlignment(true);
				return;
			}
			boolean didChange = false;
			int n = components.size();
			for (int i = 0; i < n; i++) {
				DataTypeComponentDB dtc = components.get(i);
				int nextIndex = i + 1;
				if (dtc.getDataType() == dt) {
					// assume no impact to bitfields since base types
					// should not change size
					int dtLen = dt.getLength();
					int dtcLen = dtc.getLength();
					if (dtLen < dtcLen) {
						dtc.setLength(dtLen, true);
						shiftOffsets(nextIndex, dtcLen - dtLen, 0);
						didChange = true;
					}
					else if (dtLen > dtcLen) {
						int consumed = consumeBytesAfter(i, dtLen - dtcLen);
						if (consumed > 0) {
							dtc.updateRecord();
							shiftOffsets(nextIndex, -consumed, 0);
							didChange = true;
						}
					}
				}
			}
			if (didChange) {
				adjustInternalAlignment(true);
				notifySizeChanged();
			}
		}
		finally {
			lock.release();
		}
	}

	public  StructureDB(DataTypeManagerDB dataMgr, DBObjectCache<DataTypeDB> cache,
			CompositeDBAdapter compositeAdapter, ComponentDBAdapter componentAdapter,
			Record record);

}