public async Task <string> GetEventFilterAsync(string query, IQueryVisitorContext context = null)
        {
            context = context ?? new ElasticQueryVisitorContext();
            var result = await _parser.ParseAsync(query, context);

            await _eventQueryVisitor.AcceptAsync(result, context);

            return(result.ToString());
        }
        public async Task <StackFilter> GetStackFilterAsync(string query, IQueryVisitorContext context = null)
        {
            context = context ?? new ElasticQueryVisitorContext();
            var result = await _parser.ParseAsync(query, context);

            var invertedResult = result.Clone();

            result = await _stackQueryVisitor.AcceptAsync(result, context);

            invertedResult = await _invertedStackQueryVisitor.AcceptAsync(invertedResult, context);

            return(new StackFilter {
                Filter = result.ToString(),
                InvertedFilter = invertedResult.ToString(),
                HasStatus = context.GetBoolean(nameof(StackFilter.HasStatus)),
                HasStackIds = context.GetBoolean(nameof(StackFilter.HasStackIds)),
                HasStatusOpen = context.GetBoolean(nameof(StackFilter.HasStatusOpen))
            });
        }