@Test
	public void testActionEnableBreakpointProgram() throws Throwable {
		T t = addMappedBreakpointOpenAndWait();
		Trace trace = getTrace(t);
		LogicalBreakpoint lb = Unique.assertOne(breakpointService.getAllBreakpoints());

		lb.disable();
		handleToggleBreakpointInvocation(Unique.assertOne(lb.getTraceBreakpoints(trace)), false);
		waitForPass(() -> assertEquals(State.DISABLED, lb.computeState()));

		ProgramLocationActionContext ctx = staticCtx(addr(program, 0x00400123));
		assertTrue(breakpointMarkerPlugin.actionEnableBreakpoint.isAddToPopup(ctx));
		performAction(breakpointMarkerPlugin.actionEnableBreakpoint, ctx, true);
		handleToggleBreakpointInvocation(Unique.assertOne(lb.getTraceBreakpoints(trace)), true);

		waitForPass(() -> assertEquals(State.ENABLED, lb.computeState()));
	}
TODO: Test with a second trace? ATM, the program state is auto-synced with single trace,
so might be difficult to assess more complex state changes.
Ghidra/Test/DebuggerIntegrationTest/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/AbstractDebuggerBreakpointMarkerPluginTest.java