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

// fidl_experiment = output_index_json

#include <fidl/test.transitivedependencies/cpp/natural_ostream.h>

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

std::ostream& fidl::ostream::Formatter<::test_transitivedependencies::Baz>::Format(std::ostream& os, const ::test_transitivedependencies::Baz& value) {
  os << "test_transitivedependencies::Baz";
  os << "{ ";
  os << "g";
  os << " = " << fidl::ostream::Formatted<::test_middle::Bar>(value.g()) << ", ";
  os << "}";
  return os;
}

namespace test_transitivedependencies {

std::ostream& operator<<(std::ostream& os, const ::test_transitivedependencies::Baz& value) {
  return fidl::ostream::Formatter<::test_transitivedependencies::Baz>::Format(os, value);
}

#pragma clang diagnostic pop

}  // namespace test_transitivedependencies
