public override void LeaveBinaryExpression(BinaryExpression node)
{
if (BinaryOperatorType.Assign == node.Operator)
{
ProcessAssignment(node);
return;
}
if (!AstUtil.IsOverloadableOperator(node.Operator)) return;
if (!IsDuckTyped(node.Left) && !IsDuckTyped(node.Right)) return;
MethodInvocationExpression mie = CodeBuilder.CreateMethodInvocation(
node.LexicalInfo,
RuntimeServices_InvokeBinaryOperator,
CodeBuilder.CreateStringLiteral(
AstUtil.GetMethodNameForOperator(node.Operator)),
node.Left, node.Right);
Replace(mie);
}