private void TraverseMultiplicationRightOperandAndDoOperation(IExpression expression) {
Contract.Assume(expression is IMultiplication);
var multiplication = (IMultiplication)expression;
this.Traverse(multiplication.RightOperand);
this.EmitSourceLocation(multiplication);
OperationCode operationCode = OperationCode.Mul;
if (multiplication.CheckOverflow) {
if (multiplication.TreatOperandsAsUnsignedIntegers)
operationCode = OperationCode.Mul_Ovf_Un;
else
operationCode = OperationCode.Mul_Ovf;
}
this.generator.Emit(operationCode);
this.StackSize--;
}