private static BinaryReader getLinkerLoadCommandReader(BinaryReader reader, MachHeader header,
			SplitDyldCache splitDyldCache) throws MachException {
		if (splitDyldCache == null) {
			return reader.clone();
		}
		SegmentCommand linkEdit = header.getSegment(SegmentNames.SEG_LINKEDIT);
		if (linkEdit != null) {
			for (int i = 0; i < splitDyldCache.size(); i++) {
				DyldCacheHeader dyldCacheHeader = splitDyldCache.getDyldCacheHeader(i);
				for (DyldCacheMappingInfo mappingInfo : dyldCacheHeader.getMappingInfos()) {
					if (mappingInfo.contains(linkEdit.getVMaddress(), true)) {
						return new BinaryReader(splitDyldCache.getProvider(i), true);
					}
				}
			}
		}
		throw new MachException("__LINKEDIT segment not found in DYLD cache");
	}
Gets a {@link BinaryReader} capable of reading the load commands used by the dynamic linker.
In the case of the DYLD cache, these load commands will reside in the __LINKEDIT segment,
which could be in a different provider than the Mach-O header if a {@link SplitDyldCache} 
is being used.
<p>
NOTE: This method assumes that all of the segment {@link LoadCommand}s have already been
parsed.

@param reader The {@link BinaryReader} used to read the given Mach-O header
@param header The {@link MachHeader Mach-O header}
@param splitDyldCache The {@link SplitDyldCache}, or null if that is not being used
@return A {@link BinaryReader} capable of reading the load commands used by the dynamic
  linker.  Nothing should be assumed about where this reader initially points to.
@throws MachException If the __LINKEDIT segment was expected but not found
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/macho/commands/LoadCommandFactory.java