protected virtual Expression AnalyzeBinaryOperator(BinaryExpression expression, TranslationContext context)
 {
     // Detect if it is a logical expression - if yes, check for bit column argument
       var isLogicOp = expression.Left.Type == typeof(bool);
       // process arguments
       var ops = expression.GetOperands();
       var newOps = ops.Select(op => CheckBoolBitExpression(Analyze(op, context))).ToList();
       //special case - string + string; this used to be in PrequelAnalyzer
       if (expression.NodeType == ExpressionType.Add && expression.Left.Type == typeof(string))
     return CreateSqlFunction(SqlFunctionType.Concat, newOps[0], newOps[1]);
       //general case
       var newExpr = expression.ChangeOperands(newOps, ops);
       // Check bitwise op
       var result = CheckBitwiseOp(newExpr);
       return result;
 }