public static DyldCacheSlideInfoCommon parseSlideInfo(BinaryReader reader, long slideInfoOffset,
			DyldCacheMappingInfo mappingInfo, MessageLog log,TaskMonitor monitor) {
		if (slideInfoOffset == 0) {
			return null;
		}

		monitor.setMessage("Parsing DYLD slide info...");
		monitor.initialize(1);
		String errorMessage = "Failed to parse dyld_cache_slide_info";
		try {
			reader.setPointerIndex(slideInfoOffset);
			int version = reader.readInt(reader.getPointerIndex());
			errorMessage += version;
			DyldCacheSlideInfoCommon returnedSlideInfo = switch (version) {
				case 1 -> new DyldCacheSlideInfo1(reader, mappingInfo);
				case 2 -> new DyldCacheSlideInfo2(reader, mappingInfo);
				case 3 -> new DyldCacheSlideInfo3(reader, mappingInfo);
				case 4 -> new DyldCacheSlideInfo4(reader, mappingInfo);
				case 5 -> new DyldCacheSlideInfo5(reader, mappingInfo);
				default -> throw new IOException(); // will be caught and version will be added to message
			};
			monitor.incrementProgress(1);
			returnedSlideInfo.slideInfoOffset = slideInfoOffset;
			return returnedSlideInfo;
		}
		catch (IOException e) {
			log.appendMsg(DyldCacheSlideInfoCommon.class.getSimpleName(), errorMessage);
			return null;
		}
	}
Parses the slide info

@param reader A {@link BinaryReader} positioned at the start of a DYLD slide info
@param slideInfoOffset The offset of the slide info to parse
@param mappingInfo The {@link DyldCacheMappingInfo} of where the slide fixups will take place
@param log The log
@param monitor A cancelable task monitor
@return The slide info object
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/macho/dyld/DyldCacheSlideInfoCommon.java