static boolean canRecover(LocalBufferFile bf) {
		RecoveryFile rf = null;
		try {
			File[] snapshotFiles = getSnapshotFiles(bf);
			rf = getRecoveryFile(bf, snapshotFiles);
			if (rf != null) {
				boolean canRecover = true;
				try {
					if (rf.getParameter(CHANGE_SET_REQUIRED_PARM) != 0) {
						File[] changeFiles = getChangeFiles(bf);
						int snapshotIndex = rf.getFile().equals(snapshotFiles[0]) ? 0 : 1;
						canRecover = changeFiles[snapshotIndex].exists();
					}
				}
				catch (NoSuchElementException e) {
				}
				return canRecover;
			}
		}
		catch (IOException e) {
		}
		finally {
			if (rf != null) {
				try {
					rf.close();
				}
				catch (IOException e) {
				}
			}
		}
		return false;
	}
Returns the recovery change data file for reading or null if one is not available.
The caller must dispose of the returned file before peforming generating any new
recovery snapshots.
@throws IOException
Ghidra/Framework/DB/src/main/java/db/buffers/RecoveryMgr.java