private void createActions() {
		searchAction = new NavigatableContextAction(SEARCH_ACTION_NAME, getName(), false) {
			@Override
			public void actionPerformed(NavigatableActionContext context) {
				showSearchDialog(context);
			}
		};
		searchAction.addToWindowWhen(NavigatableActionContext.class);
		searchAction.setHelpLocation(new HelpLocation("Search", "Instruction_Pattern_Search"));
		searchAction.setMenuBarData(
			new MenuData(new String[] { ToolConstants.MENU_SEARCH, "For Instruction Patterns" },
				null, "search for", -1, "InstructionPatterns"));
		searchAction.setDescription("Construct searches using selected instructions");
		tool.addAction(searchAction);
	}
Returns true if the user has selected one and only one range of
instructions.

If there are multiple ranges, this could be for two reasons: 1) the user
has (via the mouse) selected more than one set of address ranges, or 2)
the user selects a single region but that region spans memory blocks;
this would be interpreted by the program as being 2 distinct selection
ranges. In both of these cases, we throw an exception with a message that
the caller can log if desired.

@param selection the program selection
@return true if the selection range is valid
@throws InvalidInputException
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/instructionsearch/InstructionSearchPlugin.java