// WARNING: This file is machine generated by fidlgen.

// fidl_experiment = output_index_json

#pragma once

#include <fidl/test.escaping/cpp/natural_types.h>
#include <lib/fidl/cpp/natural_ostream.h>

#include <iostream>

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wshadow"

template <>
struct fidl::ostream::Formatter<::test_escaping::DocCommentWithQuotes> {
  static std::ostream& Format(std::ostream& os, const ::test_escaping::DocCommentWithQuotes& value);
};

namespace test_escaping {

std::ostream& operator<<(std::ostream& os, const ::test_escaping::DocCommentWithQuotes& value);

}  // namespace test_escaping

#ifdef __Fuchsia__

#endif  // __Fuchsia__

#pragma clang diagnostic pop
