static boolean hasFileAndPathAndTimeStampMatch(ResourceFile exportsFile, File libraryFile)
			throws ParseException, SAXException, IOException {
		if (exportsFile == null || !exportsFile.exists()) {
			return false;
		}
		// TODO: should consider checking version instead of last modified
		XmlPullParser parser = XmlPullParserFactory.create(exportsFile, ERROR_HANDLER, false);
		try {
			XmlElement start = parser.start("LIBRARY");
			String path = start.getAttribute("PATH");
			String dateString = start.getAttribute("DATE");
			Date date = TIMESTAMP_FORMAT.parse(dateString);
			long lastModifiedSeconds = (libraryFile.lastModified() / 1000) * 1000; // file time in seconds
			return date.equals(new Date(lastModifiedSeconds)) &&
				path.equalsIgnoreCase(libraryFile.getAbsolutePath());
		}
		finally {
			parser.dispose();
		}
	}
Check an existing exports file to verify that it corresponds to the
specified libraryFile.

@param exportsFile existing exports file
@param libraryFile library file
@return true if exports file corresponds to library file
@throws ParseException if timestamp fails to parse
@throws SAXException if exports file has XML failure
@throws IOException if unable to read exports file
Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/LibrarySymbolTable.java