private boolean opObjectsDiffer(Object[] opObjects1, Object[] opObjects2) {
		if (opObjects1.length != opObjects2.length) {
			return true;
		}
		for (int i = 0; i < opObjects1.length; i++) {
			Object obj1 = opObjects1[i];
			Object obj2 = opObjects2[i];
			if (obj1.equals(obj2)) {
				continue;
			}
			if (obj1 instanceof Scalar && obj2 instanceof Scalar) {
				if (ignoreConstants) {
					continue;
				}
			}
			else if (obj1 instanceof Address && obj2 instanceof Address) {
				if (ignoreConstants) {
					continue;
				}
			}
			else if (obj1 instanceof Register && obj2 instanceof Register) {
				Register reg1 = (Register) obj1;
				Register reg2 = (Register) obj2;
				int len1 = reg1.getBitLength();
				int len2 = reg2.getBitLength();
				if (len1 != len2) {
					return true;
				}
				if (!ignoreRegisters && !reg1.equals(reg2)) {
					return true;
				}
				continue;
			}
			return true;
		}
		return false;
	}
Determine if the first and second instructions objects for a particular operand differ.
The opObjects are checked using the currently specified ignore flags for determining 
instruction operand differences.
@param opObjects1 the operand objects that compose an operand for the first instruction
@param opObjects2 the operand objects that compose an operand for the second instruction
@return true if the opObjects differ based on the current diff ignore flags.
Ghidra/Features/Base/src/main/java/ghidra/program/util/ListingDiff.java