@Override
	protected void decompilerActionPerformed(DecompilerActionContext context) {
		Msg.info(this, "TaintSliceTreeAction action performed: " + context.toString());
		Program program = context.getProgram();
		if (program == null) {
			return;
		}
		ClangToken tokenAtCursor = context.getTokenAtCursor();
		HighVariable highVariable = tokenAtCursor.getHighVariable();
		String hv = highVariable == null ? "HV NULL" : highVariable.toString();

		Msg.info(this, "TaintSliceTreeAction action performed.\n" +
			"\tProgram: " + program.toString() + "\n" +
			"\tClangToken: " + tokenAtCursor.toString() + "\n" +
			"\tHighVariable: " + hv);

		if (highVariable != null) {
			// TODO This will need the sarif dataframe with only the path information.
			plugin.showOrCreateNewSliceTree(program, tokenAtCursor, highVariable);
		}
	}
Triggered by right-click on a token in the decompiler window.

Action triggered from a specific token in the decompiler window to mark a variable as a
source or sink and generate the requisite query. Legal tokens to select include:
<ul><li>
An input parameter,
</li><li>
A stack variable, 
</li><li>
A variable associated with a register, or 
</li><li>
A "dynamic" variable. 
</li></ul>
Ghidra/Features/DecompilerDependent/src/main/java/ghidra/app/plugin/core/decompiler/taint/actions/TaintSliceTreeAction.java