@Override
	public void deleteAtOffset(int offset) {
		lock.acquire();
		try {
			checkDeleted();
			if (offset < 0) {
				throw new IllegalArgumentException("Offset cannot be negative.");
			}
			if (offset > structLength) {
				return;
			}

			int index = Collections.binarySearch(components, Integer.valueOf(offset),
				OffsetComparator.INSTANCE);

			if (index < 0) {
				if (offset == structLength) {
					return;
				}
				shiftOffsets(-index - 1, -1, -1); // updates timestamp
			}
			else {
				// delete all components containing the offset working backward from the last such
				// component
				index = advanceToLastComponentContainingOffset(index, offset);
				DataTypeComponentDB dtc = components.get(index);
				while (dtc.containsOffset(offset)) {
					doDeleteWithComponentShift(index, false); // updates timestamp
					if (--index < 0) {
						break;
					}
					dtc = components.get(index);
				}
			}
			repack(false, false);
			notifySizeChanged(false);
		}
		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