@Override
	public List<DataTypeComponent> getComponentsContaining(int offset) {
		lock.acquire();
		try {
			checkIsValid();
			ArrayList<DataTypeComponent> list = new ArrayList<>();
			if (offset > structLength || offset < 0) {
				return list;
			}
			int index = Collections.binarySearch(components, Integer.valueOf(offset),
				OffsetComparator.INSTANCE);
			boolean hasSizedComponent = false;
			if (index >= 0) {
				// collect matching defined components containing offset
				DataTypeComponentDB dtc = components.get(index);
				index = backupToFirstComponentContainingOffset(index, offset);
				while (index < components.size()) {
					dtc = components.get(index);
					if (!dtc.containsOffset(offset)) {
						break;
					}
					++index;
					hasSizedComponent |= (dtc.getLength() != 0);
					list.add(dtc);
				}
				// transform index for use with generateUndefinedComponent if invoked
				index = -index - 1;
			}

			if (!hasSizedComponent && offset != structLength && !isPackingEnabled()) {
				// generate undefined component for padding offset within non-packed structure if
				// offset only occupied by zero-length component
				list.add(generateUndefinedComponent(offset, index));
			}
			return list;
		}
		finally {
			lock.release();
		}
	}
Advance from specified defined-component index to the last component which contains the
specified offset.

@param index any defined component index which contains offset.
@param offset offset within structure.
@return index of last defined component containing specific offset.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/StructureDB.java