  void addStreamEncoderFilter(StreamEncoderFilterSharedPtr filter,
                              Matcher::MatchTreeSharedPtr<HttpMatchingData> match_tree) override {
    if (match_tree) {
      addStreamEncoderFilterWorker(
          filter,
          std::make_shared<FilterMatchState>(std::move(match_tree),
                                             std::make_shared<Matching::HttpMatchingDataImpl>()),
          false);
      return;
    }

    addStreamEncoderFilterWorker(filter, nullptr, false);
  }
  void addStreamEncoderFilter(StreamEncoderFilterSharedPtr filter,
                              Matcher::MatchTreeSharedPtr<HttpMatchingData> match_tree) override {
    if (match_tree) {
      addStreamEncoderFilterWorker(
          filter,
          std::make_shared<FilterMatchState>(std::move(match_tree),
                                             std::make_shared<Matching::HttpMatchingDataImpl>()),
          false);
      return;
    }

    addStreamEncoderFilterWorker(filter, nullptr, false);
  }