@Test
	public void testImportExportWithGUI() throws Exception {

		setKeyBindingsUpDialog();

		debug("a");

		// get current options
		ToolOptions toolKeyBindingOptions = tool.getOptions(DockingToolConstants.KEY_BINDINGS);

		debug("b");

		// save and reload them to make sure they are the same
		File saveFile = exportOptions(toolKeyBindingOptions);
		ToolOptions originalOptions = importOptions(saveFile);

		assertOptionsMatch(
			"Options do not contain different data after changes have been made.",
			toolKeyBindingOptions, originalOptions);

		debug("c");

		// make some changes using the options dialog
		setKeyBinding("x", KeyEvent.VK_X);

		debug("d");

		// verify the changes are different than the original values
		assertOptionsDontMatch(
			"Options does not contain different data after changes have been made.",
			toolKeyBindingOptions, originalOptions);

		debug("e");

		// import the original values file through the tool
		importOptionsWithGUI(saveFile, true);
		// get the updated values that have not been applied
		Map<String, KeyStroke> keyStrokeMap = panel.getKeyStrokeMap();

		debug("f");

		// verify the data is the same as it was before the changes
		boolean same = compareOptionsWithKeyStrokeMap(originalOptions, keyStrokeMap);
		assertTrue("The exported options contains different data than were imported.", same);

		debug("g");

		// close the tool *without* applying the changes
		closeAllWindows();
		env.dispose();

		debug("h");

		saveFile.delete();

		// reload the tool and make sure the values are those of the changes
		// *before* the last import
		setUp();
		setKeyBindingsUpDialog();

		debug("i");

		ToolOptions newlyLoadedDefaultOptions = tool.getOptions(DockingToolConstants.KEY_BINDINGS);

		assertOptionsMatch(
			"The options from the first tool instance have changed " +
				"in the second tool instance even though the testing changes were not applied.",
			originalOptions, newlyLoadedDefaultOptions);

		debug("j");

		// now push the changes through again, applying the changes this time
		// to make sure that nothing unexpected happens
		setKeyBinding("y", KeyEvent.VK_Y);

		debug("k");

		saveFile = exportOptions(newlyLoadedDefaultOptions);

		debug("l");

		importOptionsWithGUI(saveFile, true);

		debug("m");

		// apply the changes to the system and close the tool
		runSwing(() -> applyButton.doClick());

		debug("n");

		saveFile.delete();

		// reload the tool and make sure the values are those of the changes
		// *after* the last import
		// reload with our saved tool
		saveAndCloseTool();
		reopenTool(tool);

		debug("p");

		setKeyBindingsUpDialog(tool);

		newlyLoadedDefaultOptions = tool.getOptions(DockingToolConstants.KEY_BINDINGS);
		assertOptionsDontMatch(
			"The options are the same after making changes, applying, closing and reloading.",
			originalOptions, newlyLoadedDefaultOptions);

		debug("q");
		closeAllWindows();
	}
Tests the {@link KeyBindingUtils} class.


@since  Tracker Id 329
Ghidra/Features/Base/src/test.slow/java/ghidra/framework/plugintool/dialog/KeyBindingUtilsTest.java