private void createFilterAction() {
		MultiStateDockingAction<FilterSettings> filterAction =
			new MultiStateDockingAction<>("Function Association Functions Filter", VTPlugin.OWNER) {

				@Override
				public void actionStateChanged(ActionState<FilterSettings> newActionState,
						EventTrigger trigger) {
					filterSettings = newActionState.getUserData();
					sourceFunctionsModel.setFilterSettings(filterSettings);
					destinationFunctionsModel.setFilterSettings(filterSettings);
				}
			};

		filterAction.setHelpLocation(new HelpLocation("VersionTrackingPlugin", "Functions_Filter"));

		Icon allFunctionsIcon = new GIcon("icon.version.tracking.function.filter.all");
		ActionState<FilterSettings> allFunctionsActionState =
			new ActionState<>("Show All Functions", allFunctionsIcon, SHOW_ALL);
		allFunctionsActionState
				.setHelpLocation(new HelpLocation("VersionTrackingPlugin", "Show_All_Functions"));

		Icon unmatchedIcon = new GIcon("icon.version.tracking.function.filter.unmatched");
		ActionState<FilterSettings> unmatchedOnlyActionState =
			new ActionState<>("Show Only Unmatched Functions", unmatchedIcon, SHOW_UNMATCHED);
		unmatchedOnlyActionState.setHelpLocation(
			new HelpLocation("VersionTrackingPlugin", "Show_Unmatched_Functions"));

		ActionState<FilterSettings> unacceptedOnlyActionState = new ActionState<>(
			"Show Only Unaccepted Match Functions", FILTER_NOT_ACCEPTED_ICON, SHOW_UNACCEPTED);
		unacceptedOnlyActionState.setHelpLocation(
			new HelpLocation("VersionTrackingPlugin", "Show_Unaccepted_Functions"));

		filterAction.addActionState(allFunctionsActionState);
		filterAction.addActionState(unmatchedOnlyActionState);
		filterAction.addActionState(unacceptedOnlyActionState);

		addLocalAction(filterAction);
	}
Provider for the version tracking function association table.
Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/provider/functionassociation/VTFunctionAssociationProvider.java