@Override
	public DataTypeComponent getDefinedComponentAtOrAfterOffset(int offset) {
		if (offset > structLength || offset < 0) {
			return null;
		}
		int index = Collections.binarySearch(components, Integer.valueOf(offset),
			OffsetComparator.INSTANCE);
		if (index >= 0) {
			DataTypeComponent dtc = components.get(index);
			index = backupToFirstComponentContainingOffset(index, offset);
			dtc = components.get(index);
			return dtc;
		}
		index = -index - 1;
		if (index < components.size()) {
			return components.get(index);
		}
		return null;
	}
Construct a new structure with the given name and length

@param path the category path indicating where this data type is located.
@param name the name of the new structure
@param length the initial size of the structure in bytes. If 0 is specified the structure
           will report its length as 1 and {@link #isNotYetDefined()} will return true.
@param universalID the id for the data type
@param sourceArchive the source archive for this data type
@param lastChangeTime the last time this data type was changed
@param lastChangeTimeInSourceArchive the last time this data type was changed in its source
           archive.
@param dtm the data type manager associated with this data type. This can be null. Also, the
           data type manager may not yet contain this actual data type.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/StructureDataType.java