boolean isValidFile() {
		try (FidDB fidDB = getFidDB(false)) {
			// do nothing - just checking
			return true;
		}
		catch (VersionException e) {
			// Version upgrades are not supported - call showError() to let the user know
			Msg.showError(this, null, "Failed to open FidDb",
				"Failed to open incompatible FidDb (may need to regenerate with this version of Ghidra): " +
					file.getAbsolutePath());
		}
		catch (IOException e) {
			// Not calling showError() here; simply return false and log the message
			Msg.error(this, "Failed to open FidDb: " + file.getAbsolutePath(), e);
		}
		return false;
	}
This class manages a file that contains a Fid database.  We support two types of Fid
databases.  One type is a read-only raw buffer file, that is the type we distribute with
Ghidra.  The other is for user-added FidFiles. These are packed database files that can
be opened for update.  The down-side is that these files must be unpacked before they are
used and are susceptible to leaving large temporary files if Ghidra crashes or is killed
hard.

FidFiles are used to open Fid databases.  User-added (packed) files can also be opened
for update.  In this case, the FidFile will maintain a handle to the open, updateable
FidDB.  If a second request comes in to open the Fid database for update, the currently
open fid database will be return, with its "open count" incremented.  As users close
fidDBs, its "open count" is decremented until it reaches 0 and then it is acutally closed.
Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/db/FidFile.java