private void AddIllegalExpressions(LegalFilterParser parser)
        {
            foreach (var expr in parser.IllegalExpressionsForSplitRequest)
            {
                var newLegalParser  = new LegalFilterParser(strict);
                var newFilterParser = new FilterExpressionParser();

                var legalExpression    = newLegalParser.Visit(expr);
                var filteredExpression = newFilterParser.Visit(legalExpression);

                FilterSets.AddRange(GetFilters(newFilterParser.Conditions));

                AddIllegalExpressions(newLegalParser);
            }
        }
        private Expression ParseFilters(Expression expression)
        {
            Logger.Log("Identifying query filters", Indentation.Two);

            var filterExpressionParser = new FilterExpressionParser();

            Logger.Log("Identifying filter candidates", Indentation.Three);
            var filterExpression = filterExpressionParser.Visit(expression);

            var conditions = filterExpressionParser.Conditions;

            Logger.Log($"Found {conditions.Count} filter candidates", Indentation.Four, conditions);

            var adjustedFilters = GetFilters(conditions);

            if (adjustedFilters.Count > 0)
            {
                FilterSets.AddRange(adjustedFilters);
            }

            return(filterExpression);
        }