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

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

#include <memory>

namespace llcpp {

namespace fidl {
namespace test {
namespace bindingsdenylist {

void ::llcpp::fidl::test::bindingsdenylist::OnlyLlcpp::
    SizeAndOffsetAssertionHelper() {
  static_assert(sizeof(OnlyLlcpp) == sizeof(fidl_xunion_t));
  static_assert(offsetof(OnlyLlcpp, ordinal_) == offsetof(fidl_xunion_t, tag));
  static_assert(offsetof(OnlyLlcpp, envelope_) ==
                offsetof(fidl_xunion_t, envelope));
}

}  // namespace bindingsdenylist
}  // namespace test
}  // namespace fidl
}  // namespace llcpp
