@Override
	public boolean equals(Object obj) {
		if (!(obj instanceof AbstractDBTraceSymbol)) {
			return false;
		}
		if (obj == this) {
			return true;
		}
		AbstractDBTraceSymbol that = (AbstractDBTraceSymbol) obj;
		if (this.getID() == that.getID()) {
			return true;
		}

		if (this.getSymbolType() != that.getSymbolType()) {
			return false;
		}
		if (!this.getName().equals(that.getName())) {
			return false;
		}
		if (!this.getAddress().equals(that.getAddress())) {
			return false;
		}
		if (!Objects.equals(this.getParentSymbol(), that.getParentSymbol())) {
			return false;
		}
		return true;
	}
{@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