private void TraverseSubtractionRightOperandAndDoOperation(IExpression expression) {
Contract.Assume(expression is ISubtraction);
var subtraction = (ISubtraction)expression;
this.Traverse(subtraction.RightOperand);
this.EmitSourceLocation(subtraction);
OperationCode operationCode = OperationCode.Sub;
if (subtraction.CheckOverflow) {
if (subtraction.TreatOperandsAsUnsignedIntegers)
operationCode = OperationCode.Sub_Ovf_Un;
else
operationCode = OperationCode.Sub_Ovf;
}
this.generator.Emit(operationCode);
this.StackSize--;
}