protected virtual Expression AnalyzeCall(MethodCallExpression expression, IList<Expression> parameters, TranslationContext context)
        {
            var operands = expression.GetOperands().ToList();
            var operarandsToSkip = expression.Method.IsStatic ? 1 : 0;
            var originalParameters = operands.Skip(parameters.Count + operarandsToSkip);
            var newParameters = parameters.Union(originalParameters).ToList();

            var dt = expression.Method.DeclaringType;
            if(dt == typeof(Queryable) || dt == typeof(Enumerable))
              return AnalyzeQueryableCall(expression.Method, newParameters, context);
            if(dt == typeof(Vita.Entities.EntityQueryExtensions))
              return AnalyzeQueryExtensionsCall(expression.Method, newParameters, context);
            if(dt == typeof(string))
              return AnalyzeStringCall(expression.Method, newParameters, context);
            if(dt == typeof(Math))
              return AnalyzeMathCall(expression.Method, newParameters, context);
            return AnalyzeUnknownCall(expression, newParameters, context);
        }