private void createActions() {

		DockingAction analyzeInstructionsAction =
			new DockingAction("Analyze Selected Node", plugin.getName()) {

				@Override
				public void actionPerformed(ActionContext context) {

					InstructionTreeContext iTreeContext = (InstructionTreeContext) context;
					iTreeContext.analyze();
				}

				@Override
				public boolean isEnabledForContext(ActionContext context) {
					return context instanceof InstructionTreeContext;
				}
			};
		analyzeInstructionsAction.setPopupMenuData(new MenuData(new String[] { "Analyze Node" }));
		analyzeInstructionsAction.setDescription(
			"Analyze all byte sequences corresponding to this instruction sequence.");
		analyzeInstructionsAction.setHelpLocation(
			new HelpLocation("FunctionBitPatternsExplorerPlugin", "Analyzing_Byte_Sequences"));
		tool.addLocalAction(this, analyzeInstructionsAction);

		DockingAction analyzeByteSeqAction =
			new DockingAction("Analyze Selected Sequences", plugin.getName()) {

				@Override
				public void actionPerformed(ActionContext context) {
					ByteSequenceContext byteSeqContext = (ByteSequenceContext) context;
					byteSeqContext.analyze();
				}

				@Override
				public boolean isEnabledForContext(ActionContext context) {
					return context instanceof ByteSequenceContext;
				}
			};
		analyzeByteSeqAction.setPopupMenuData(new MenuData(new String[] { "Analyze Sequences" }));
		analyzeByteSeqAction.setHelpLocation(
			new HelpLocation("FunctionBitPatternsExplorerPlugin", "Analyzing_Byte_Sequences"));
		analyzeByteSeqAction.setDescription("Analyze Selected Byte Sequences");
		tool.addLocalAction(this, analyzeByteSeqAction);

		DockingAction evaluateSelectedAction =
			new DockingAction("Evaluate Selected Sequences", plugin.getName()) {

				@Override
				public void actionPerformed(ActionContext context) {
					EvaluateContext evalContext = (EvaluateContext) context;
					evalContext.analyze();
				}

				@Override
				public boolean isEnabledForContext(ActionContext context) {
					return context instanceof EvaluateContext;
				}
			};
		evaluateSelectedAction.setPopupMenuData(
			new MenuData(new String[] { "Evaluate Selected Patterns" }));
		evaluateSelectedAction.setDescription("Evalute Selected Patterns");
		evaluateSelectedAction.setHelpLocation(
			new HelpLocation("FunctionBitPatternsExplorerPlugin", "Evaluating_Patterns"));
		tool.addLocalAction(this, evaluateSelectedAction);

		gatherDataFromProgramAction =
			new DockingAction(EXPLORE_FUNCTION_PATTERNS_TEXT, tool.getName()) {

				@Override
				public void actionPerformed(ActionContext context) {
					Program program = plugin.getCurrentProgram();
					DataGatheringParamsDialog paramDialog =
						new DataGatheringParamsDialog(DATA_GATHERING_TEXT, component);
					if (paramDialog.isCanceled) {
						return;
					}
					DataGatheringParams params = paramDialog.getDataGatheringParams();
					dataSourceField.setText(program.getName());
					tool.showComponentProvider(FunctionBitPatternsMainProvider.this, true);
					patternReader = new FileBitPatternInfoReader(program, params, component);
					updatePanel();
					tabbedPane.setSelectedIndex(FIRST_INSTRUCTION_PANEL_INDEX);
				}

				@Override
				public boolean isEnabledForContext(ActionContext context) {
					return !(plugin.getCurrentProgram() == null);
				}

			};
		gatherDataFromProgramAction.setMenuBarData(new MenuData(
			new String[] { ToolConstants.MENU_TOOLS, EXPLORE_FUNCTION_PATTERNS_TEXT }));
		HelpLocation helpLocation = new HelpLocation("FunctionBitPatternsExplorerPlugin",
			"Function_Bit_Patterns_Explorer_Plugin");
		gatherDataFromProgramAction.setHelpLocation(helpLocation);
		tool.addAction(gatherDataFromProgramAction);
	}
@param plugin plugin associated with provider
Ghidra/Features/BytePatterns/src/main/java/ghidra/bitpatterns/gui/FunctionBitPatternsMainProvider.java