FSRL findFile(File dir, ExternalDebugInfo debugInfo, TaskMonitor monitor)
			throws IOException, CancelledException {
		if (!debugInfo.hasFilename()) {
			return null;
		}
		File file = new File(dir, debugInfo.getFilename());
		if (file.isFile()) {
			int fileCRC = calcCRC(file);
			if (fileCRC == debugInfo.getCrc()) {
				return FileSystemService.getInstance().getLocalFSRL(file);
			}
			Msg.info(this, "DWARF external debug file found with mismatching crc, ignored: " +
				file + ", (" + Integer.toHexString(fileCRC) + ")");
		}
		File[] subDirs;
		if ((subDirs = dir.listFiles(f -> f.isDirectory())) != null) {
			for (File subDir : subDirs) {
				FSRL result = findFile(subDir, debugInfo, monitor);
				if (result != null) {
					return result;
				}
			}
		}
		return null;
	}
Creates a new {@link LocalDirectorySearchLocation} at the specified location.
 
@param searchDir path to the root directory of where to search
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/dwarf/external/LocalDirectorySearchLocation.java