public function MapBinaryOperationExpression(CoreExpression $LeftOperandExpression, $BinaryOperator, CoreExpression $RightOperandExpression)
 {
     if ($LeftOperandExpression instanceof E\BinaryOperationExpression) {
         $NestedOperand = $LeftOperandExpression->GetLeftOperandExpression();
         if ($NestedOperand instanceof E\FunctionCallExpression && $NestedOperand->GetName() === 'LOCATE') {
             if ($RightOperandExpression instanceof EE\ConstantExpression && $RightOperandExpression->GetValue() === false) {
                 $RightOperandExpression = Expression::Constant(-1);
             }
         }
     }
     switch ($BinaryOperator) {
         case O\Binary::Concatenation:
             return new E\FunctionCallExpression('CONCAT', Expression::ValueList([$LeftOperandExpression, $RightOperandExpression]));
         case O\Binary::Power:
             return new E\FunctionCallExpression('POW', Expression::ValueList([$LeftOperandExpression, $RightOperandExpression]));
         case O\Binary::NullSafeInequality:
             return Expression::UnaryOperation(O\Unary::Not, Expression::BinaryOperation($LeftOperandExpression, O\Binary::NullSafeEquality, $RightOperandExpression));
         default:
             return new E\BinaryOperationExpression($LeftOperandExpression, $BinaryOperator, $RightOperandExpression);
     }
 }