private void PushComparison(Expression lhs, Expression rhs, ComparisonOperator op) { Visit(lhs); object left = Pop(); Visit(rhs); object right = Pop(); bool areOperandsSwapped = IsCandidateFieldValue(right); if (areOperandsSwapped) { object temp = left; left = right; right = temp; } AssertType(left, typeof(FieldValue), lhs); AssertType(right, typeof(IComparisonOperand), rhs); Push(new ComparisonExpression((FieldValue)left, (IComparisonOperand)right, op)); if (areOperandsSwapped && !op.IsSymmetric()) { Negate(); } }