@Override
	public boolean equals(Object obj) {
		checkIsValid();

		if (obj == null) {
			return false;
		}
		if (obj == this) {
			return true;
		}
		if (getClass() != obj.getClass()) {
			return false;
		}
		FunctionStackFrame otherFrame = (FunctionStackFrame) obj;

		if ((this.getLocalSize() != otherFrame.getLocalSize()) ||
			(this.getParameterOffset() != otherFrame.getParameterOffset()) ||
			(this.getReturnAddressOffset() != otherFrame.getReturnAddressOffset()) ||
			(this.variables.length != otherFrame.variables.length)) {
			return false;
		}

		for (int i = 0; i < variables.length; i++) {
			if (!variables[i].equals(otherFrame.variables[i])) {
				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/function/FunctionStackFrame.java