public Lifespan getLifespan() {
		// TODO: Cache this computation and/or keep it as transient fields?
		long min = Long.MAX_VALUE;
		long max = Long.MIN_VALUE;
		for (TraceAddressSnapRange range : getRanges()) {
			min = Math.min(min, range.getLifespan().lmin());
			max = Math.min(max, range.getLifespan().lmax());
		}
		if (min > max) {
			return null;
		}
		return Lifespan.span(min, max);
	}
{@inheritDoc}

<p>
NOTE: If the IDs match, then the symbols are considered equal, regardless of their other
attributes. This mechanic seems required to support the whole "placeholder" idea. TODO: The
"placeholder" thing may no longer be applicable.
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/symbol/AbstractDBTraceSymbol.java