private SourceFile getSourceFile(FileChecksumsC13Section fileChecksums, int fileId) {

		// Note: fileId is an offset into the checksum table, so we have them stored in a map.
		C13FileChecksum checksumInfo = fileChecksums.getFileChecksumByOffset(fileId);

		Long offsetFilename = checksumInfo.getOffsetFilename();
		String filename = pdb.getNameStringFromOffset(offsetFilename.intValue());
		SourceFileIdType idType = switch (checksumInfo.getChecksumTypeValue()) {
			case 0 -> SourceFileIdType.NONE;
			case 1 -> SourceFileIdType.MD5;
			case 2 -> SourceFileIdType.SHA1;
			case 3 -> SourceFileIdType.SHA256;
			default -> SourceFileIdType.UNKNOWN;
		};
		byte[] identifier = checksumInfo.getChecksumBytes();

		SourceFile sourceFile =
			SourceFileUtils.getSourceFileFromPathString(filename, idType, identifier);
		try {
			manager.addSourceFile(sourceFile);
		}
		catch (LockException e) {
			throw new AssertionError("LockException after exclusive access verified!");
		}
		return sourceFile;
	}
Finds or creates a SourceFile for our checksum and file ID for C13 processing
@param fileChecksums the set of FileChecksumC13Sections for this module
@param fileId the file ID found in the source line records
@return the source file
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/PdbSourceLinesApplicator.java