private List<DyldFixup> processPointerChain(long segmentOffset, long pageOffset,
			BinaryReader reader, int pointerSize, TaskMonitor monitor)
			throws IOException, CancelledException {

		List<DyldFixup> fixups = new ArrayList<>(1024);
		long valueMask = ~deltaMask;
		long deltaShift = Long.numberOfTrailingZeros(deltaMask);

		for (long delta = -1; delta != 0; pageOffset += delta * 4) {
			monitor.checkCancelled();

			long dataOffset = segmentOffset + pageOffset;
			long chainValue =
				pointerSize == 8 ? reader.readLong(dataOffset) : reader.readUnsignedInt(dataOffset);

			delta = (chainValue & deltaMask) >> deltaShift;
			chainValue &= valueMask;
			if (chainValue != 0) {
				chainValue += valueAdd /* + slide */;
				fixups.add(new DyldFixup(dataOffset, chainValue, pointerSize, null, null));
			}
		}

		return fixups;
	}
Walks the pointer chain at the given reader offset to find necessary {@link DyldFixup}s

@param segmentOffset The segment offset
@param pageOffset The page offset
@param reader A reader positioned at the start of the segment to fix
@param pointerSize The size of a pointer in bytes
@param monitor A cancellable monitor
@return A {@link List} of {@link DyldFixup}s
@throws IOException If an IO-related error occurred
@throws CancelledException If the user cancelled the operation
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/macho/dyld/DyldCacheSlideInfo2.java