public boolean recover(TaskMonitor monitor) throws IOException, CancelledException {
		synchronized (snapshotLock) {
			synchronized (this) {

				// Can only recover local buffer files which have not yet been modified
				if (!(sourceFile instanceof LocalBufferFile) || bufferTable == null ||
					isChanged() || recoveryMgr != null || lockCount != 0 || corruptedState) {
					return false;
				}

				recoveryMgr = new RecoveryMgr(this, monitor);

				return recoveryMgr.recovered();
			}
		}
	}
Immediately following instatiation of this BufferMgr, attempt a unsaved data recovery.
If successful, the method getRecoveryChangeSetFile should be invoked to obtain/open the
changeSet data file which must be used by the application to recover the changeSet.
If recovery is cancelled, this buffer manager must be disposed.
since the underlying state will be corrupt.
@param monitor task monitor
@return true if recovery successful else false
@throws IOException if IO error occurs
@throws CancelledException if task monitor is cancelled
Ghidra/Framework/DB/src/main/java/db/buffers/BufferMgr.java