code: @Override
      @SuppressWarnings("unchecked")
      public void apply(Expression expr) {
          if (expr instanceof HavingExpression) {
              ExpressionList having = expressionList.query().having();
              ((HavingExpression) expr).getExpressionList().forEach(having::add);
              return;
          } else if (expr instanceof TextExpression) {
              TextExpression expression = (TextExpression) expr;
              ExpressionList et = expressionList.query().text();
              expression.getExpressionList().forEach(et::add);
              return;
          } else if (expr instanceof DistinctExpression) {
              expressionList.setDistinct(((DistinctExpression) expr).distinct);
              return;
          } else if (expr instanceof AbstractTextExpression) {
              expressionList.setUseDocStore(true);
          } else if (expr instanceof FilterExpression) {
              FilterExpression filter = (FilterExpression) expr;
              Query query = expressionList.query();
              query.filterMany(filter.getPath()).addAll(filter);
              return;
          }
          expressionList.add(expr);
      }
docs: {@inheritDoc}