@Test
	public void testStaggered() {
		AddressSet a = set(rng(0x1000, 0x3fff), rng(0x5000, 0x7fff));
		AddressSet b = set(rng(0x3000, 0x5fff), rng(0x7000, 0x9fff));

		assertEquals(List.of( //
			pair(rng(0x1000, 0x3fff), rng(0x3000, 0x5fff)), //
			pair(rng(0x5000, 0x7fff), rng(0x3000, 0x5fff)), //
			pair(rng(0x5000, 0x7fff), rng(0x7000, 0x9fff))  //
		), getOverlaps(a, b));
		assertEquals(List.of( //
			pair(rng(0x3000, 0x5fff), rng(0x1000, 0x3fff)), //
			pair(rng(0x3000, 0x5fff), rng(0x5000, 0x7fff)), //
			pair(rng(0x7000, 0x9fff), rng(0x5000, 0x7fff))  //
		), getOverlaps(b, a));
	}
Copies each entry into a new list, since the iterator may modify the entry in place

@param it the source iterator
@return the destination (new) list
Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/util/OverlappingObjectIteratorTest.java