@Override
    public Query normalizeQuery(final Query query, final ParameterProvider parameterProvider) {
        return query.toBuilder()
                .query(ElasticsearchQueryString.of(this.queryStringDecorators.decorate(query.query().queryString(), parameterProvider, query)))
                .filter(normalizeFilter(query.filter(), query, parameterProvider))
                .searchTypes(query.searchTypes().stream().map(searchType -> normalizeSearchType(searchType, query, parameterProvider)).collect(Collectors.toSet()))
                .build();
    }
@Test
    void decoratesQueryStringFilters() {
        final Query query = Query.builder()
                .filter(QueryStringFilter.builder().query("action:index").build())
                .build();

        final Query normalizedQuery = decorateQueryStringsNormalizer.normalizeQuery(query, name -> Optional.empty());

        assertThat(normalizedQuery)
                .extracting(Query::filter)
                .matches(queryFilter -> (queryFilter instanceof QueryStringFilter && ((QueryStringFilter) queryFilter).query().equals("Hey there!")));
    }