private void processPrelinkWithMacho(List<MachoPrelinkMap> prelinkList,
			List<Long> machoHeaderOffsets, TaskMonitor monitor) throws IOException, MachException {

		monitor.setMessage("Processing PRELINK with found Mach-O headers...");
		monitor.initialize(prelinkList.size());

		BidiMap<MachoPrelinkMap, Long> map = MachoPrelinkUtils.matchPrelinkToMachoHeaderOffsets(provider,
			prelinkList, machoHeaderOffsets, monitor);

		for (MachoPrelinkMap info : map.keySet()) {

			if (monitor.isCancelled()) {
				break;
			}
			monitor.incrementProgress(1);

			if (info.getPrelinkBundlePath() == null) {
				continue;
			}

			// The following could end up being a directory once we discover it has a child...we'll 
			// handle that in storeFile()
			GFileImpl file =
				GFileImpl.fromPathString(this, root, info.getPrelinkBundlePath(), null, false, 0);

			if (info.getPrelinkExecutableSize() > -1) {
				file.setLength(info.getPrelinkExecutableSize());
			}

			file = storeFile(file, info);

			if (isChildOf(systemKextFile, file)) {
				continue;
			}

			fileToMachoOffsetMap.put(file, map.get(info));
		}
	}
Processes PRELINK and Macho-O offsets in order to map files to their Mach-O offsets in the 
providers.

@param prelinkList The list of discovered {@link MachoPrelinkMap}s.
@param machoHeaderOffsets The list of provider offsets where prelinked Mach-O headers start.
@param monitor A monitor
@throws IOException if an IO-related problem occurred.
@throws MachException if there was a problem parsing Mach-O headers.
Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/ios/prelink/MachoPrelinkFileSystem.java