private LocationMemento restoreLocation(int index, SaveState saveState, Program[] programs) {
		Element mementoElement = saveState.getXmlElement(MEMENTO_DATA + index);
		if (mementoElement == null) {
			return null;
		}

		SaveState mementoState = new SaveState(mementoElement);
		LocationMemento locationMemento = null;
		try {
			locationMemento = LocationMemento.getLocationMemento(mementoState, programs);
		}
		catch (IllegalArgumentException iae) {
			// this can happen if a program is renamed or deleted but the tool config state
			// has not been saved since the delete
			Msg.trace(this, "Unable to restore LocationMemento: " + iae.getMessage(), iae);
		}
		return locationMemento;
	}
<CODE>NavigationHistoryPlugin</CODE> is used in conjunction with other plugins to cause program
viewer plugins to change their focus to a certain address. As viewer plugins are directed to one
or more addresses it maintains information about where the viewers have been to support ability
for the viewers to go back to a previous "focus" point.

Services Provided: NavigationHistoryService Events Consumed: ProgramLocationPluginEvent,
ProgramPluginEvent Event Produced: HistoryChangePluginEvent Actions: None.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NavigationHistoryPlugin.java