private void parseFile() throws IOException {

		try {
			if (MAGIC_NUMBER != recoveryFile.getParameter(MAGIC_NUMBER_PARM)) {
				throw new IOException("Invalid recovery file");
			}

			try {
				timestamp = ((long) recoveryFile.getParameter(TIMESTAMP_HI_PARM) << 32) |
					(recoveryFile.getParameter(TIMESTAMP_LOW_PARM) & 0xffffffffL);
			}
			catch (NoSuchElementException e) {
				// Not as good - better than nothing
				timestamp = recoveryFile.getFile().lastModified();
			}

			srcFileId = ((long) recoveryFile.getParameter(SRC_FILE_ID_HI_PARM) << 32) |
				(recoveryFile.getParameter(SRC_FILE_ID_LOW_PARM) & 0xffffffffL);

			indexCnt = recoveryFile.getParameter(INDEX_COUNT_PARM);

			readBufferMap();

			readFreeIndexList();

		}
		catch (NoSuchElementException e) {
			throw new IOException("Corrupt recovery file");
		}

	}
Construct a read-only recovery file
@param srcBf the original source buffer file to which this file applies.
@param rfile version buffer file to be updated/created
@throws IOException if the file already exists or an IO error occurs
Ghidra/Framework/DB/src/main/java/db/buffers/RecoveryFile.java