public Collection<? extends T> getIntersecting(Lifespan span, TraceThread thread,
			AddressRange range, boolean includeDynamicSymbols, boolean forward) {
		try (LockHold hold = LockHold.lock(manager.lock.readLock())) {
			manager.trace.getThreadManager().assertIsMine(thread);
			manager.assertValidThreadAddress(thread, range.getMinAddress()); // Only examines space
			DBTraceAddressSnapRangePropertyMapSpace<Long, DBTraceSymbolIDEntry> space =
				manager.idMap.get(DBTraceSpaceKey.create(range.getAddressSpace(), thread, 0),
					false);
			if (space == null) {
				return Collections.emptyList();
			}
			return new LazyCollection<T>(() -> {
				return space.reduce(TraceAddressSnapRangeQuery.intersecting(range, span)
						.starting(forward
								? Rectangle2DDirection.LEFTMOST
								: Rectangle2DDirection.RIGHTMOST))
						.orderedValues()
						.stream()
						.filter(s -> DBTraceSymbolManager.unpackTypeID(s) == this.typeID)
						.map(s -> store.getObjectAt(DBTraceSymbolManager.unpackKey(s)));
			});
		}
	}
TODO: Document me

Get intersecting things in no particular order

@param span
@param thread
@param range
@param includeDynamicSymbols
@return
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/symbol/AbstractDBTraceSymbolSingleTypeWithLocationView.java