public override ICodeNode VisitBinaryExpression(BinaryExpression node)
			{
				V_0 = false;
				if (node.get_Left().get_CodeNodeType() == 24)
				{
					V_2 = node.get_Left() as BinaryExpression;
					if (V_2.CompareOperators(node) <= 0)
					{
						if (V_2.get_IsOverridenOperation())
						{
							V_0 = true;
						}
					}
					else
					{
						V_0 = true;
					}
				}
				if (V_0)
				{
					node.set_Left(new ParenthesesExpression(node.get_Left()));
				}
				V_1 = false;
				if (node.get_Right().get_CodeNodeType() == 24)
				{
					V_3 = node.get_Right() as BinaryExpression;
					V_4 = V_3.CompareOperators(node);
					if (V_4 <= 0)
					{
						if (V_4 != 0)
						{
							if (!node.get_IsAssignmentExpression() && V_3.get_IsOverridenOperation())
							{
								V_1 = true;
							}
						}
						else
						{
							if (node.get_Operator() == V_3.get_Operator())
							{
								if (this.IsCommutative(node.get_Operator()))
								{
									if ((object)V_3.get_ExpressionType() == (object)V_3.get_ExpressionType().get_Module().get_TypeSystem().get_Single() || (object)V_3.get_ExpressionType() == (object)V_3.get_ExpressionType().get_Module().get_TypeSystem().get_Double())
									{
										V_1 = true;
									}
								}
								else
								{
									V_1 = true;
								}
							}
							else
							{
								V_1 = true;
							}
						}
					}
					else
					{
						V_1 = true;
					}
				}
				if (V_1)
				{
					node.set_Right(new ParenthesesExpression(node.get_Right()));
				}
				return this.VisitBinaryExpression(node);
			}