@Override
	public void setUnvalidatedKeyBindingData(KeyBindingData keyBindingData) {

		// 
		// Unobvious Dependencies!: 
		// We have two different ways the user can set the keybinding for this action: 1) By way
		// of the 'assign keybindings' action in the provider and 2) by including a keybinding
		// assignment in the metadata of the script itself.  The user-defined binding from the GUI
		// gets precedence over the script's metadata.
		//
		// Also, if we are given a data object whose keystroke is null, then we have 
		// to decide if the value is being completely cleared, or if the user has cleared 
		// the action from the GUI, in which case we should fall back to the
		// script's metadata, if it defines a keybinding.
		//	    	    
		KeyBindingData newKeyBindingData = checkForFallbackKeybindingCondition(keyBindingData);
		updateUserDefinedKeybindingStatus(newKeyBindingData);
		super.setUnvalidatedKeyBindingData(newKeyBindingData);
		plugin.getProvider().keyBindingUpdated();
	}
Signals that the keybinding value has been set by the user from the GUI (used for persistence)
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/ScriptAction.java