@Override
	public Data getComponent(int index) {
		if (index < 0 || index >= getNumComponents()) {
			return null;
		}

		Data data;
		try {
			data = null;
			if (baseDataType instanceof Array) {
				Array array = (Array) baseDataType;
				int elementLength = array.getElementLength();
				data = new PseudoDataComponent(program, address.add(index * elementLength), this,
					array.getDataType(), index, index * elementLength, elementLength, this);

			}
			else if (baseDataType instanceof Composite) {
				Composite struct = (Composite) baseDataType;
				DataTypeComponent dtc = struct.getComponent(index);
				data =
					new PseudoDataComponent(program, address.add(dtc.getOffset()), this, dtc, this);

			}
			else if (baseDataType instanceof DynamicDataType) {
				DynamicDataType ddt = (DynamicDataType) baseDataType;
				DataTypeComponent dtc = ddt.getComponent(index, this);
				data =
					new PseudoDataComponent(program, address.add(dtc.getOffset()), this, dtc, this);
			}
		}
		catch (AddressOverflowException e) {
			throw new ConcurrentModificationException("Data type length changed");
		}
		return data;
	}
"Fake" data generated by the PseudoDisassembler.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/util/PseudoData.java