private ExpressionValue applyBinaryOperator(ExpressionOperator operator,
			AddressExpressionValue expressionValue) throws ExpressionException {
		Address otherValue = expressionValue.getAddress();
		long otherValueOffset = otherValue.getOffset();
		long offset = value.getOffset();
		int compareResult = value.compareTo(otherValue);

		switch (operator) {
			case BITWISE_AND:
				return new LongExpressionValue(offset & otherValueOffset);
			case BITWISE_OR:
				return new LongExpressionValue(offset | otherValueOffset);
			case BITWISE_XOR:
				return new LongExpressionValue(offset ^ otherValueOffset);
			case SUBTRACT:
				return new LongExpressionValue(value.subtract(otherValue));
			case ADD:
				return new LongExpressionValue(offset + otherValueOffset);
			case EQUALS:
				return booleanExpression(compareResult == 0);
			case GREATER_THAN:
				return booleanExpression(compareResult > 0);
			case LESS_THAN:
				return booleanExpression(compareResult < 0);
			case GREATER_THAN_OR_EQUAL:
				return booleanExpression(compareResult >= 0);
			case LESS_THAN_OR_EQUAL:
				return booleanExpression(compareResult <= 0);
			default:
				throw new ExpressionException(
					"Binary Operator \"" + operator +
						"\" with Long operands not supported by Address values!");
		}
	}
Address operand values. See {@link ExpressionValue}. Defines supported operators and other
operands for expression values that are addresses.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/util/AddressExpressionValue.java