@Override
	public boolean equals(Object obj) {
		synchronized (function) {
			if (obj == null) {
				return false;
			}
			if (obj == this) {
				return true;
			}
			if (!(obj instanceof OldStackFrameDB)) {
				return false;
			}
			OldStackFrameDB otherFrame = (OldStackFrameDB) obj;
			if ((this.getLocalSize() != otherFrame.getLocalSize()) ||
				(this.getParameterOffset() != otherFrame.getParameterOffset()) ||
				(this.returnStart != otherFrame.returnStart) ||
				(this.variables.size() != otherFrame.variables.size())) {
				return false;
			}
			Iterator<Variable> myIter = this.variables.iterator();
			Iterator<Variable> otherIter = otherFrame.variables.iterator();
			while (myIter.hasNext() && otherIter.hasNext()) {
				Variable myVar = myIter.next();
				Variable otherVar = otherIter.next();
				if (!(myVar.equals(otherVar))) {
					return false;
				}
			}
			return true;
		}
	}
Returns whether some other stack frame is "equivalent to" this one.
The stack frame is considered equal to another even if they are each
part of a different function.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/oldfunction/OldStackFrameDB.java