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

#include <fidl/test/encapsulatedstructs/llcpp/fidl.h>

#include <memory>

namespace llcpp {

namespace fidl {
namespace test {
namespace encapsulatedstructs {

#ifdef __Fuchsia__
void NonInlineStructTestStruct::_CloseHandles() { h.reset(); }
#endif  // __Fuchsia__

#ifdef __Fuchsia__
void TopLevelStruct::_CloseHandles() { b._CloseHandles(); }
#endif  // __Fuchsia__

}  // namespace encapsulatedstructs
}  // namespace test
}  // namespace fidl
}  // namespace llcpp
