@Override
	public List<Data> getComponentsContaining(int offset) {
		List<Data> list = new ArrayList<>();
		if (offset < 0 || offset >= length) {
			return null;
		}

		if (baseDataType instanceof Array) {
			Array array = (Array) baseDataType;
			int elementLength = array.getElementLength();
			int index = offset / elementLength;
			list.add(getComponent(index));
		}
		else if (baseDataType instanceof Structure) {
			Structure struct = (Structure) baseDataType;
			for (DataTypeComponent dtc : struct.getComponentsContaining(offset)) {
				list.add(getComponent(dtc.getOrdinal()));
			}
		}
		else if (baseDataType instanceof DynamicDataType) {
			DynamicDataType ddt = (DynamicDataType) baseDataType;
			DataTypeComponent dtc = ddt.getComponentAt(offset, this);
			// Logic handles overlapping bit-fields
			// Include if offset is contained within bounds of component
			while (dtc != null && (offset >= dtc.getOffset()) &&
				(offset <= (dtc.getOffset() + dtc.getLength() - 1))) {
				int ordinal = dtc.getOrdinal();
				list.add(getComponent(ordinal++));
				dtc = ordinal < ddt.getNumComponents(this) ? ddt.getComponent(ordinal, this) : null;
			}
		}
		else if (baseDataType instanceof Union) {
			if (offset == 0) {
				for (int i = 0; i < getNumComponents(); i++) {
					list.add(getComponent(i));
				}
			}
		}
		return list;
	}
"Fake" data generated by the PseudoDisassembler.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/util/PseudoData.java