@Test
	public void testFill1Program2TracesThenCloseProgramThenReopenProgram() throws Throwable {
		createTarget1();
		Trace trace1 = getTrace(target1);
		traceManager.openTrace(trace1);

		createTarget3();
		Trace trace3 = getTrace(target3);
		traceManager.openTrace(trace3);

		createProgramFromTrace(trace1); // Also suitable for trace3
		intoProject(program);
		programManager.openProgram(program);

		addProgramTextBlock(program);
		MR text1 = addTargetTextRegion(target1);
		MR text3 = addTargetTextRegion(target3, 0x55551000);

		addTextMapping(target1, text1, program);
		addTextMapping(target3, text3, program);
		waitOn(mappingService.changesSettled());
		waitOn(breakpointService.changesSettled());

		assertEquals(2, mappingService
				.getOpenMappedLocations(new ProgramLocation(program, addr(program, 0x00400123)))
				.size());

		addProgramBreakpoints(program);
		addTargetSoftwareBreakpoint(target1, text1);
		addTargetSoftwareBreakpoint(target3, text3);
		waitOn(breakpointService.changesSettled());

		assertLogicalBreakpointForMappedBookmarkAnd2TraceBreakpoints(trace1, trace3);

		programManager.closeProgram(program, true);
		waitForSwing();
		waitOn(mappingService.changesSettled());
		waitOn(breakpointService.changesSettled());

		assertLogicalBreakpointForLoneSoftwareBreakpoint(trace1, 0x55550123, 2);
		assertLogicalBreakpointForLoneSoftwareBreakpoint(trace3, 0x55551123, 2);

		programManager.openProgram(program);
		waitForDomainObject(program);
		waitOn(mappingService.changesSettled());
		waitOn(breakpointService.changesSettled());

		assertLogicalBreakpointForMappedBookmarkAnd2TraceBreakpoints(trace1, trace3);
	}
Tracks the current set of logical breakpoints.

<p>
Its assertions require perfection in the sequence of events: 1) No double-adds. 2) No
double-removes. 3) No extraneous updates. At the end of each test, the current set of
breakpoints in this listener should be verified against those reported by the service.
Ghidra/Test/DebuggerIntegrationTest/src/test/java/ghidra/app/plugin/core/debug/service/breakpoint/AbstractDebuggerLogicalBreakpointServiceTest.java