@Test
	public void testAsKeySetSubSet() {
		assertEquals(map.subMap(1L, 2L).keySet().keySpan, keySet.subSet(1L, 2L).keySpan);
		assertEquals(rMap.subMap(2L, 1L).keySet().keySpan, rKeySet.subSet(2L, 1L).keySpan);
		assertEquals(map.subMap(1L, 2L).keySet().direction, keySet.subSet(1L, 2L).direction);
		assertEquals(rMap.subMap(2L, 1L).keySet().direction, rKeySet.subSet(2L, 1L).direction);

		populateStore(-5, -3, -1, 1, 3, 5);

		assertEquals(List.of(-1L, 1L), new ArrayList<>(keySet.subSet(-3L, false, 3L, false)));
		assertEquals(List.of(1L, -1L), new ArrayList<>(rKeySet.subSet(3L, false, -3L, false)));

		assertEquals(List.of(-3L, -1L, 1L), new ArrayList<>(keySet.subSet(-3L, true, 3L, false)));
		assertEquals(List.of(1L, -1L, -3L), new ArrayList<>(rKeySet.subSet(3L, false, -3L, true)));
		assertEquals(List.of(-3L, -1L, 1L), new ArrayList<>(keySet.subSet(-3L, 3L)));

		assertEquals(List.of(-1L, 1L, 3L), new ArrayList<>(keySet.subSet(-3L, false, 3L, true)));
		assertEquals(List.of(3L, 1L, -1L), new ArrayList<>(rKeySet.subSet(3L, true, -3L, false)));
		assertEquals(List.of(3L, 1L, -1L), new ArrayList<>(rKeySet.subSet(3L, -3L)));

		assertEquals(List.of(-3L, -1L, 1L, 3L),
			new ArrayList<>(keySet.subSet(-3L, true, 3L, true)));
		assertEquals(List.of(3L, 1L, -1L, -3L),
			new ArrayList<>(rKeySet.subSet(3L, true, -3L, true)));
	}
This exists to verify behavior in {@link #testAsValuesSubIterator()}
Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreTest.java