private void addMiningAction() {
		mineClosedPatternsAction = new DockingAction(MINE_PATTERNS_BUTTON_TEXT, title) {
			@Override
			public void actionPerformed(ActionContext context) {
				List<ByteSequenceRowObject> lastSelectedObjects =
					byteSequenceTable.getLastSelectedObjects();
				SequenceMiningParamsInputDialog paramsCreater =
					new SequenceMiningParamsInputDialog(ENTER_PARAMS_TITLE, mainPanel);
				if (paramsCreater.isCanceled()) {
					return;
				}
				SequenceMiningParams params = paramsCreater.getSequenceMiningParams();
				List<ClosedPatternRowObject> closedPatternRowObjects =
					ClosedPatternRowObject.mineClosedPatterns(lastSelectedObjects,
						params.getMinPercentage(), params.getRequiredBitsOfCheck(),
						params.getUseBinary(), type, cRegFilter, mainPanel);
				new ClosedPatternTableDialog(plugin, closedPatternRowObjects, mainPanel, type,
					cRegFilter);
			}

			@Override
			public boolean isEnabledForContext(ActionContext context) {
				List<ByteSequenceRowObject> lastSelectedObjects =
					byteSequenceTable.getLastSelectedObjects();
				if (lastSelectedObjects == null) {
					return false;
				}
				if (lastSelectedObjects.isEmpty()) {
					return false;
				}
				return true;
			}

			@Override
			public boolean isAddToPopup(ActionContext context) {
				return true;
			}

		};
		Icon icon = new GIcon("icon.bytepatterns.pattern.mining.analyzer");
		mineClosedPatternsAction.setPopupMenuData(
			new MenuData(new String[] { "Mine Sequential Patterns" }, icon));
		mineClosedPatternsAction.setDescription("Mine Sequential Patterns");
		this.addAction(mineClosedPatternsAction);
		HelpLocation helpLocation = new HelpLocation("FunctionBitPatternsExplorerPlugin",
			"Mining_Closed_Sequential_Patterns");
		mineClosedPatternsAction.setHelpLocation(helpLocation);
	}
Create a provider for analyzing byte sequences with the option to mine selected sequences
for closed patterns
@param plugin plugin
@param rowObjects byte sequences to mine
@param parent parent componet
@param type sequence type
@param cRegFilter {@code ContextRegisterFilter} applied to sequences
Ghidra/Features/BytePatterns/src/main/java/ghidra/bitpatterns/gui/PatternMiningAnalyzerProvider.java