private static File findFile(String parent, String filename) {
		File iFile = null;

		iFile = new File(parent + File.separator + filename);
		if (iFile.exists())
			return iFile;

		// try just in this directory
		File sameiFile = new File(parent + File.separator + (new File(filename)).getName());
		if (sameiFile.exists())
			return sameiFile;

		// try all files in this directory doing to-lower on both input file and output file
		// if match return it
		File folder = new File(parent);
		if (folder.isDirectory()) {
			File[] listOfFiles = folder.listFiles();

			if (listOfFiles != null) {
				for (File file : listOfFiles) {
					if (file.isFile() && filename.compareToIgnoreCase(file.getName()) == 0) {
						return file;
					}
				}
			}
		}
		return null;
	}
Given a throwable, attempt pull out the significant error parts to generate a 
user-friendly error message.

@param t the throwable to examine, originating from the {@link CParser}.
@param functionString the full function signature text that was parsed by the parser.
@return a user-friendly error message, or null if this class did not know how to 
        handle the given exception.
Ghidra/Features/Base/src/main/java/ghidra/app/util/cparser/C/CParserUtils.java