/**
 * Autogenerated by Thrift for /opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/hack.thrift
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated @nocommit
 */

#pragma once

#include <thrift/lib/cpp2/gen/module_types_h.h>

namespace apache::thrift {
namespace ident {
struct name;
struct name;
struct underlyingName;
struct extraNamespace;
struct name;
struct reason;
struct name;
struct reason;
struct attributes;
struct name;
struct attributes;
} // namespace ident
namespace detail {
#ifndef APACHE_THRIFT_ACCESSOR_name
#define APACHE_THRIFT_ACCESSOR_name
APACHE_THRIFT_DEFINE_ACCESSOR(name);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_name
#define APACHE_THRIFT_ACCESSOR_name
APACHE_THRIFT_DEFINE_ACCESSOR(name);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_underlyingName
#define APACHE_THRIFT_ACCESSOR_underlyingName
APACHE_THRIFT_DEFINE_ACCESSOR(underlyingName);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_extraNamespace
#define APACHE_THRIFT_ACCESSOR_extraNamespace
APACHE_THRIFT_DEFINE_ACCESSOR(extraNamespace);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_name
#define APACHE_THRIFT_ACCESSOR_name
APACHE_THRIFT_DEFINE_ACCESSOR(name);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_reason
#define APACHE_THRIFT_ACCESSOR_reason
APACHE_THRIFT_DEFINE_ACCESSOR(reason);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_name
#define APACHE_THRIFT_ACCESSOR_name
APACHE_THRIFT_DEFINE_ACCESSOR(name);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_reason
#define APACHE_THRIFT_ACCESSOR_reason
APACHE_THRIFT_DEFINE_ACCESSOR(reason);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_attributes
#define APACHE_THRIFT_ACCESSOR_attributes
APACHE_THRIFT_DEFINE_ACCESSOR(attributes);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_name
#define APACHE_THRIFT_ACCESSOR_name
APACHE_THRIFT_DEFINE_ACCESSOR(name);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_attributes
#define APACHE_THRIFT_ACCESSOR_attributes
APACHE_THRIFT_DEFINE_ACCESSOR(attributes);
#endif
} // namespace detail
} // namespace apache::thrift

// BEGIN declare_enums
// END declare_enums
// BEGIN forward_declare
namespace facebook::thrift::annotation::hack {
class FieldWrapper;
class Wrapper;
class Adapter;
class SkipCodegen;
class Name;
class UnionEnumAttributes;
class StructTrait;
class Attributes;
class StructAsTrait;
class ModuleInternal;
class GenerateClientMethodsWithHeaders;
class MigrationBlockingAllowInheritance;
class MigrationBlockingLegacyJSONSerialization;
} // namespace facebook::thrift::annotation::hack
// END forward_declare
namespace apache::thrift::detail::annotation {
} // namespace apache::thrift::detail::annotation

namespace apache::thrift::detail::qualifier {
} // namespace apache::thrift::detail::qualifier

// BEGIN hash_and_equal_to
// END hash_and_equal_to
namespace facebook::thrift::annotation::hack {
using ::apache::thrift::detail::operator!=;
using ::apache::thrift::detail::operator>;
using ::apache::thrift::detail::operator<=;
using ::apache::thrift::detail::operator>=;


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/hack.thrift", "name": "FieldWrapper", "kind": "struct" } */
class FieldWrapper final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/hack/FieldWrapper";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "hack";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::name
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = FieldWrapper;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  FieldWrapper();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  FieldWrapper(apache::thrift::FragileConstructor, ::std::string name__arg);

  FieldWrapper(FieldWrapper&&) noexcept;

  FieldWrapper(const FieldWrapper& src);


  FieldWrapper& operator=(FieldWrapper&&) noexcept;
  FieldWrapper& operator=(const FieldWrapper& src);

  ~FieldWrapper();

 private:
  ::std::string __fbthrift_field_name;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const FieldWrapper&) const;
  bool operator<(const FieldWrapper&) const;

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> name_ref() const& {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> name_ref() & {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> name_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> name() const& {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> name() & {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> name() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  [[deprecated("Use `FOO.name().value()` instead of `FOO.get_name()`")]]
  const ::std::string& get_name() const& {
    return __fbthrift_field_name;
  }

  /** Glean { "field": "name" } */
  [[deprecated("Use `FOO.name().value()` instead of `FOO.get_name()`")]]
  ::std::string get_name() && {
    return static_cast<::std::string&&>(__fbthrift_field_name);
  }

  /** Glean { "field": "name" } */
  template <typename T_FieldWrapper_name_struct_setter = ::std::string>
  [[deprecated("Use `FOO.name() = BAR` instead of `FOO.set_name(BAR)`")]]
  ::std::string& set_name(T_FieldWrapper_name_struct_setter&& name_) {
    name_ref() = std::forward<T_FieldWrapper_name_struct_setter>(name_);
    return __fbthrift_field_name;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<FieldWrapper>;
  friend void swap(FieldWrapper& a, FieldWrapper& b);
};

template <class Protocol_>
unsigned long FieldWrapper::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/hack.thrift", "name": "Wrapper", "kind": "struct" } */
class Wrapper final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/hack/Wrapper";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "hack";
  }
  static constexpr std::size_t __fbthrift_num_fields = 3;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::name,
    ::apache::thrift::ident::underlyingName,
    ::apache::thrift::ident::extraNamespace
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::string_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = Wrapper;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  Wrapper();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  Wrapper(apache::thrift::FragileConstructor, ::std::string name__arg, ::std::string underlyingName__arg, ::std::string extraNamespace__arg);

  Wrapper(Wrapper&&) noexcept;

  Wrapper(const Wrapper& src);


  Wrapper& operator=(Wrapper&&) noexcept;
  Wrapper& operator=(const Wrapper& src);

  ~Wrapper();

 private:
  ::std::string __fbthrift_field_name;
 private:
  ::std::string __fbthrift_field_underlyingName;
 private:
  ::std::string __fbthrift_field_extraNamespace;
 private:
  apache::thrift::detail::isset_bitset<3, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const Wrapper&) const;
  bool operator<(const Wrapper&) const;

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> name_ref() const& {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> name_ref() & {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> name_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> name() const& {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> name() & {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> name() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "underlyingName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> underlyingName_ref() const& {
    return {this->__fbthrift_field_underlyingName, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "underlyingName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> underlyingName_ref() & {
    return {this->__fbthrift_field_underlyingName, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "underlyingName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> underlyingName_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_underlyingName), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "underlyingName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> underlyingName() const& {
    return {this->__fbthrift_field_underlyingName, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "underlyingName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> underlyingName() & {
    return {this->__fbthrift_field_underlyingName, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "underlyingName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> underlyingName() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_underlyingName), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "extraNamespace" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> extraNamespace_ref() const& {
    return {this->__fbthrift_field_extraNamespace, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "extraNamespace" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> extraNamespace_ref() & {
    return {this->__fbthrift_field_extraNamespace, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "extraNamespace" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> extraNamespace_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_extraNamespace), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "extraNamespace" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> extraNamespace() const& {
    return {this->__fbthrift_field_extraNamespace, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "extraNamespace" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> extraNamespace() & {
    return {this->__fbthrift_field_extraNamespace, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "extraNamespace" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> extraNamespace() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_extraNamespace), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "name" } */
  [[deprecated("Use `FOO.name().value()` instead of `FOO.get_name()`")]]
  const ::std::string& get_name() const& {
    return __fbthrift_field_name;
  }

  /** Glean { "field": "name" } */
  [[deprecated("Use `FOO.name().value()` instead of `FOO.get_name()`")]]
  ::std::string get_name() && {
    return static_cast<::std::string&&>(__fbthrift_field_name);
  }

  /** Glean { "field": "name" } */
  template <typename T_Wrapper_name_struct_setter = ::std::string>
  [[deprecated("Use `FOO.name() = BAR` instead of `FOO.set_name(BAR)`")]]
  ::std::string& set_name(T_Wrapper_name_struct_setter&& name_) {
    name_ref() = std::forward<T_Wrapper_name_struct_setter>(name_);
    return __fbthrift_field_name;
  }

  /** Glean { "field": "underlyingName" } */
  [[deprecated("Use `FOO.underlyingName().value()` instead of `FOO.get_underlyingName()`")]]
  const ::std::string& get_underlyingName() const& {
    return __fbthrift_field_underlyingName;
  }

  /** Glean { "field": "underlyingName" } */
  [[deprecated("Use `FOO.underlyingName().value()` instead of `FOO.get_underlyingName()`")]]
  ::std::string get_underlyingName() && {
    return static_cast<::std::string&&>(__fbthrift_field_underlyingName);
  }

  /** Glean { "field": "underlyingName" } */
  template <typename T_Wrapper_underlyingName_struct_setter = ::std::string>
  [[deprecated("Use `FOO.underlyingName() = BAR` instead of `FOO.set_underlyingName(BAR)`")]]
  ::std::string& set_underlyingName(T_Wrapper_underlyingName_struct_setter&& underlyingName_) {
    underlyingName_ref() = std::forward<T_Wrapper_underlyingName_struct_setter>(underlyingName_);
    return __fbthrift_field_underlyingName;
  }

  /** Glean { "field": "extraNamespace" } */
  [[deprecated("Use `FOO.extraNamespace().value()` instead of `FOO.get_extraNamespace()`")]]
  const ::std::string& get_extraNamespace() const& {
    return __fbthrift_field_extraNamespace;
  }

  /** Glean { "field": "extraNamespace" } */
  [[deprecated("Use `FOO.extraNamespace().value()` instead of `FOO.get_extraNamespace()`")]]
  ::std::string get_extraNamespace() && {
    return static_cast<::std::string&&>(__fbthrift_field_extraNamespace);
  }

  /** Glean { "field": "extraNamespace" } */
  template <typename T_Wrapper_extraNamespace_struct_setter = ::std::string>
  [[deprecated("Use `FOO.extraNamespace() = BAR` instead of `FOO.set_extraNamespace(BAR)`")]]
  ::std::string& set_extraNamespace(T_Wrapper_extraNamespace_struct_setter&& extraNamespace_) {
    extraNamespace_ref() = std::forward<T_Wrapper_extraNamespace_struct_setter>(extraNamespace_);
    return __fbthrift_field_extraNamespace;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<Wrapper>;
  friend void swap(Wrapper& a, Wrapper& b);
};

template <class Protocol_>
unsigned long Wrapper::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/hack.thrift", "name": "Adapter", "kind": "struct" } */
class Adapter final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/hack/Adapter";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "hack";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::name
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = Adapter;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  Adapter();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  Adapter(apache::thrift::FragileConstructor, ::std::string name__arg);

  Adapter(Adapter&&) noexcept;

  Adapter(const Adapter& src);


  Adapter& operator=(Adapter&&) noexcept;
  Adapter& operator=(const Adapter& src);

  ~Adapter();

 private:
  ::std::string __fbthrift_field_name;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const Adapter&) const;
  bool operator<(const Adapter&) const;

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> name_ref() const& {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> name_ref() & {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> name_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> name() const& {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> name() & {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> name() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  [[deprecated("Use `FOO.name().value()` instead of `FOO.get_name()`")]]
  const ::std::string& get_name() const& {
    return __fbthrift_field_name;
  }

  /** Glean { "field": "name" } */
  [[deprecated("Use `FOO.name().value()` instead of `FOO.get_name()`")]]
  ::std::string get_name() && {
    return static_cast<::std::string&&>(__fbthrift_field_name);
  }

  /** Glean { "field": "name" } */
  template <typename T_Adapter_name_struct_setter = ::std::string>
  [[deprecated("Use `FOO.name() = BAR` instead of `FOO.set_name(BAR)`")]]
  ::std::string& set_name(T_Adapter_name_struct_setter&& name_) {
    name_ref() = std::forward<T_Adapter_name_struct_setter>(name_);
    return __fbthrift_field_name;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<Adapter>;
  friend void swap(Adapter& a, Adapter& b);
};

template <class Protocol_>
unsigned long Adapter::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/hack.thrift", "name": "SkipCodegen", "kind": "struct" } */
class SkipCodegen final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/hack/SkipCodegen";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "hack";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::reason
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = SkipCodegen;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  SkipCodegen();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  SkipCodegen(apache::thrift::FragileConstructor, ::std::string reason__arg);

  SkipCodegen(SkipCodegen&&) noexcept;

  SkipCodegen(const SkipCodegen& src);


  SkipCodegen& operator=(SkipCodegen&&) noexcept;
  SkipCodegen& operator=(const SkipCodegen& src);

  ~SkipCodegen();

 private:
  ::std::string __fbthrift_field_reason;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const SkipCodegen&) const;
  bool operator<(const SkipCodegen&) const;

  /** Glean { "field": "reason" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> reason_ref() const& {
    return {this->__fbthrift_field_reason, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "reason" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> reason_ref() & {
    return {this->__fbthrift_field_reason, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "reason" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> reason_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_reason), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "reason" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> reason() const& {
    return {this->__fbthrift_field_reason, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "reason" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> reason() & {
    return {this->__fbthrift_field_reason, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "reason" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> reason() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_reason), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "reason" } */
  [[deprecated("Use `FOO.reason().value()` instead of `FOO.get_reason()`")]]
  const ::std::string& get_reason() const& {
    return __fbthrift_field_reason;
  }

  /** Glean { "field": "reason" } */
  [[deprecated("Use `FOO.reason().value()` instead of `FOO.get_reason()`")]]
  ::std::string get_reason() && {
    return static_cast<::std::string&&>(__fbthrift_field_reason);
  }

  /** Glean { "field": "reason" } */
  template <typename T_SkipCodegen_reason_struct_setter = ::std::string>
  [[deprecated("Use `FOO.reason() = BAR` instead of `FOO.set_reason(BAR)`")]]
  ::std::string& set_reason(T_SkipCodegen_reason_struct_setter&& reason_) {
    reason_ref() = std::forward<T_SkipCodegen_reason_struct_setter>(reason_);
    return __fbthrift_field_reason;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<SkipCodegen>;
  friend void swap(SkipCodegen& a, SkipCodegen& b);
};

template <class Protocol_>
unsigned long SkipCodegen::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/hack.thrift", "name": "Name", "kind": "struct" } */
class Name final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/hack/Name";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "hack";
  }
  static constexpr std::size_t __fbthrift_num_fields = 2;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::name,
    ::apache::thrift::ident::reason
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::string_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = Name;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  Name();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  Name(apache::thrift::FragileConstructor, ::std::string name__arg, ::std::string reason__arg);

  Name(Name&&) noexcept;

  Name(const Name& src);


  Name& operator=(Name&&) noexcept;
  Name& operator=(const Name& src);

  ~Name();

 private:
  ::std::string __fbthrift_field_name;
 private:
  ::std::string __fbthrift_field_reason;
 private:
  apache::thrift::detail::isset_bitset<2, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const Name&) const;
  bool operator<(const Name&) const;

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> name_ref() const& {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> name_ref() & {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> name_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> name() const& {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> name() & {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> name() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "reason" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> reason_ref() const& {
    return {this->__fbthrift_field_reason, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "reason" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> reason_ref() & {
    return {this->__fbthrift_field_reason, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "reason" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> reason_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_reason), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "reason" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> reason() const& {
    return {this->__fbthrift_field_reason, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "reason" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> reason() & {
    return {this->__fbthrift_field_reason, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "reason" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> reason() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_reason), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "name" } */
  [[deprecated("Use `FOO.name().value()` instead of `FOO.get_name()`")]]
  const ::std::string& get_name() const& {
    return __fbthrift_field_name;
  }

  /** Glean { "field": "name" } */
  [[deprecated("Use `FOO.name().value()` instead of `FOO.get_name()`")]]
  ::std::string get_name() && {
    return static_cast<::std::string&&>(__fbthrift_field_name);
  }

  /** Glean { "field": "name" } */
  template <typename T_Name_name_struct_setter = ::std::string>
  [[deprecated("Use `FOO.name() = BAR` instead of `FOO.set_name(BAR)`")]]
  ::std::string& set_name(T_Name_name_struct_setter&& name_) {
    name_ref() = std::forward<T_Name_name_struct_setter>(name_);
    return __fbthrift_field_name;
  }

  /** Glean { "field": "reason" } */
  [[deprecated("Use `FOO.reason().value()` instead of `FOO.get_reason()`")]]
  const ::std::string& get_reason() const& {
    return __fbthrift_field_reason;
  }

  /** Glean { "field": "reason" } */
  [[deprecated("Use `FOO.reason().value()` instead of `FOO.get_reason()`")]]
  ::std::string get_reason() && {
    return static_cast<::std::string&&>(__fbthrift_field_reason);
  }

  /** Glean { "field": "reason" } */
  template <typename T_Name_reason_struct_setter = ::std::string>
  [[deprecated("Use `FOO.reason() = BAR` instead of `FOO.set_reason(BAR)`")]]
  ::std::string& set_reason(T_Name_reason_struct_setter&& reason_) {
    reason_ref() = std::forward<T_Name_reason_struct_setter>(reason_);
    return __fbthrift_field_reason;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<Name>;
  friend void swap(Name& a, Name& b);
};

template <class Protocol_>
unsigned long Name::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/hack.thrift", "name": "UnionEnumAttributes", "kind": "struct" } */
class UnionEnumAttributes final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/hack/UnionEnumAttributes";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "hack";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::attributes
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::list<::apache::thrift::type::string_t>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = UnionEnumAttributes;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  UnionEnumAttributes();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  UnionEnumAttributes(apache::thrift::FragileConstructor, ::std::vector<::std::string> attributes__arg);

  UnionEnumAttributes(UnionEnumAttributes&&) noexcept;

  UnionEnumAttributes(const UnionEnumAttributes& src);


  UnionEnumAttributes& operator=(UnionEnumAttributes&&) noexcept;
  UnionEnumAttributes& operator=(const UnionEnumAttributes& src);

  ~UnionEnumAttributes();

 private:
  ::std::vector<::std::string> __fbthrift_field_attributes;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const UnionEnumAttributes&) const;
  bool operator<(const UnionEnumAttributes&) const;

  /** Glean { "field": "attributes" } */
  template <typename..., typename fbthrift_T = ::std::vector<::std::string>>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> attributes_ref() const& {
    return {this->__fbthrift_field_attributes, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "attributes" } */
  template <typename..., typename fbthrift_T = ::std::vector<::std::string>>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> attributes_ref() & {
    return {this->__fbthrift_field_attributes, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "attributes" } */
  template <typename..., typename fbthrift_T = ::std::vector<::std::string>>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> attributes_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_attributes), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "attributes" } */
  template <typename..., typename fbthrift_T = ::std::vector<::std::string>>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> attributes() const& {
    return {this->__fbthrift_field_attributes, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "attributes" } */
  template <typename..., typename fbthrift_T = ::std::vector<::std::string>>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> attributes() & {
    return {this->__fbthrift_field_attributes, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "attributes" } */
  template <typename..., typename fbthrift_T = ::std::vector<::std::string>>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> attributes() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_attributes), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "attributes" } */
  [[deprecated("Use `FOO.attributes().value()` instead of `FOO.get_attributes()`")]]
  const ::std::vector<::std::string>& get_attributes() const&;

  /** Glean { "field": "attributes" } */
  [[deprecated("Use `FOO.attributes().value()` instead of `FOO.get_attributes()`")]]
  ::std::vector<::std::string> get_attributes() &&;

  /** Glean { "field": "attributes" } */
  template <typename T_UnionEnumAttributes_attributes_struct_setter = ::std::vector<::std::string>>
  [[deprecated("Use `FOO.attributes() = BAR` instead of `FOO.set_attributes(BAR)`")]]
  ::std::vector<::std::string>& set_attributes(T_UnionEnumAttributes_attributes_struct_setter&& attributes_) {
    attributes_ref() = std::forward<T_UnionEnumAttributes_attributes_struct_setter>(attributes_);
    return __fbthrift_field_attributes;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<UnionEnumAttributes>;
  friend void swap(UnionEnumAttributes& a, UnionEnumAttributes& b);
};

template <class Protocol_>
unsigned long UnionEnumAttributes::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/hack.thrift", "name": "StructTrait", "kind": "struct" } */
class StructTrait final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/hack/StructTrait";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "hack";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::name
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = StructTrait;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  StructTrait();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  StructTrait(apache::thrift::FragileConstructor, ::std::string name__arg);

  StructTrait(StructTrait&&) noexcept;

  StructTrait(const StructTrait& src);


  StructTrait& operator=(StructTrait&&) noexcept;
  StructTrait& operator=(const StructTrait& src);

  ~StructTrait();

 private:
  ::std::string __fbthrift_field_name;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const StructTrait&) const;
  bool operator<(const StructTrait&) const;

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> name_ref() const& {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> name_ref() & {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> name_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> name() const& {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> name() & {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> name() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  [[deprecated("Use `FOO.name().value()` instead of `FOO.get_name()`")]]
  const ::std::string& get_name() const& {
    return __fbthrift_field_name;
  }

  /** Glean { "field": "name" } */
  [[deprecated("Use `FOO.name().value()` instead of `FOO.get_name()`")]]
  ::std::string get_name() && {
    return static_cast<::std::string&&>(__fbthrift_field_name);
  }

  /** Glean { "field": "name" } */
  template <typename T_StructTrait_name_struct_setter = ::std::string>
  [[deprecated("Use `FOO.name() = BAR` instead of `FOO.set_name(BAR)`")]]
  ::std::string& set_name(T_StructTrait_name_struct_setter&& name_) {
    name_ref() = std::forward<T_StructTrait_name_struct_setter>(name_);
    return __fbthrift_field_name;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<StructTrait>;
  friend void swap(StructTrait& a, StructTrait& b);
};

template <class Protocol_>
unsigned long StructTrait::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/hack.thrift", "name": "Attributes", "kind": "struct" } */
class Attributes final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/hack/Attributes";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "hack";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::attributes
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::list<::apache::thrift::type::string_t>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = Attributes;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  Attributes();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  Attributes(apache::thrift::FragileConstructor, ::std::vector<::std::string> attributes__arg);

  Attributes(Attributes&&) noexcept;

  Attributes(const Attributes& src);


  Attributes& operator=(Attributes&&) noexcept;
  Attributes& operator=(const Attributes& src);

  ~Attributes();

 private:
  ::std::vector<::std::string> __fbthrift_field_attributes;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const Attributes&) const;
  bool operator<(const Attributes&) const;

  /** Glean { "field": "attributes" } */
  template <typename..., typename fbthrift_T = ::std::vector<::std::string>>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> attributes_ref() const& {
    return {this->__fbthrift_field_attributes, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "attributes" } */
  template <typename..., typename fbthrift_T = ::std::vector<::std::string>>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> attributes_ref() & {
    return {this->__fbthrift_field_attributes, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "attributes" } */
  template <typename..., typename fbthrift_T = ::std::vector<::std::string>>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> attributes_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_attributes), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "attributes" } */
  template <typename..., typename fbthrift_T = ::std::vector<::std::string>>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> attributes() const& {
    return {this->__fbthrift_field_attributes, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "attributes" } */
  template <typename..., typename fbthrift_T = ::std::vector<::std::string>>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> attributes() & {
    return {this->__fbthrift_field_attributes, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "attributes" } */
  template <typename..., typename fbthrift_T = ::std::vector<::std::string>>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> attributes() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_attributes), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "attributes" } */
  [[deprecated("Use `FOO.attributes().value()` instead of `FOO.get_attributes()`")]]
  const ::std::vector<::std::string>& get_attributes() const&;

  /** Glean { "field": "attributes" } */
  [[deprecated("Use `FOO.attributes().value()` instead of `FOO.get_attributes()`")]]
  ::std::vector<::std::string> get_attributes() &&;

  /** Glean { "field": "attributes" } */
  template <typename T_Attributes_attributes_struct_setter = ::std::vector<::std::string>>
  [[deprecated("Use `FOO.attributes() = BAR` instead of `FOO.set_attributes(BAR)`")]]
  ::std::vector<::std::string>& set_attributes(T_Attributes_attributes_struct_setter&& attributes_) {
    attributes_ref() = std::forward<T_Attributes_attributes_struct_setter>(attributes_);
    return __fbthrift_field_attributes;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<Attributes>;
  friend void swap(Attributes& a, Attributes& b);
};

template <class Protocol_>
unsigned long Attributes::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/hack.thrift", "name": "StructAsTrait", "kind": "struct" } */
class StructAsTrait final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/hack/StructAsTrait";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "hack";
  }
  static constexpr std::size_t __fbthrift_num_fields = 0;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0};

  using __fbthrift_reflection_idents = folly::tag_t<
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = StructAsTrait;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  StructAsTrait() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  StructAsTrait(apache::thrift::FragileConstructor);

  StructAsTrait(StructAsTrait&&) = default;

  StructAsTrait(const StructAsTrait&) = default;


  StructAsTrait& operator=(StructAsTrait&&) = default;

  StructAsTrait& operator=(const StructAsTrait&) = default;

 public:

  bool operator==(const StructAsTrait&) const;
  bool operator<(const StructAsTrait&) const;

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<StructAsTrait>;
  friend void swap(StructAsTrait& a, StructAsTrait& b);
};

template <class Protocol_>
unsigned long StructAsTrait::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/hack.thrift", "name": "ModuleInternal", "kind": "struct" } */
class ModuleInternal final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/hack/ModuleInternal";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "hack";
  }
  static constexpr std::size_t __fbthrift_num_fields = 0;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0};

  using __fbthrift_reflection_idents = folly::tag_t<
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = ModuleInternal;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  ModuleInternal() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  ModuleInternal(apache::thrift::FragileConstructor);

  ModuleInternal(ModuleInternal&&) = default;

  ModuleInternal(const ModuleInternal&) = default;


  ModuleInternal& operator=(ModuleInternal&&) = default;

  ModuleInternal& operator=(const ModuleInternal&) = default;

 public:

  bool operator==(const ModuleInternal&) const;
  bool operator<(const ModuleInternal&) const;

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<ModuleInternal>;
  friend void swap(ModuleInternal& a, ModuleInternal& b);
};

template <class Protocol_>
unsigned long ModuleInternal::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/hack.thrift", "name": "GenerateClientMethodsWithHeaders", "kind": "struct" } */
class GenerateClientMethodsWithHeaders final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/hack/GenerateClientMethodsWithHeaders";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "hack";
  }
  static constexpr std::size_t __fbthrift_num_fields = 0;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0};

  using __fbthrift_reflection_idents = folly::tag_t<
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = GenerateClientMethodsWithHeaders;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  GenerateClientMethodsWithHeaders() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  GenerateClientMethodsWithHeaders(apache::thrift::FragileConstructor);

  GenerateClientMethodsWithHeaders(GenerateClientMethodsWithHeaders&&) = default;

  GenerateClientMethodsWithHeaders(const GenerateClientMethodsWithHeaders&) = default;


  GenerateClientMethodsWithHeaders& operator=(GenerateClientMethodsWithHeaders&&) = default;

  GenerateClientMethodsWithHeaders& operator=(const GenerateClientMethodsWithHeaders&) = default;

 public:

  bool operator==(const GenerateClientMethodsWithHeaders&) const;
  bool operator<(const GenerateClientMethodsWithHeaders&) const;

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<GenerateClientMethodsWithHeaders>;
  friend void swap(GenerateClientMethodsWithHeaders& a, GenerateClientMethodsWithHeaders& b);
};

template <class Protocol_>
unsigned long GenerateClientMethodsWithHeaders::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/hack.thrift", "name": "MigrationBlockingAllowInheritance", "kind": "struct" } */
class MigrationBlockingAllowInheritance final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/hack/MigrationBlockingAllowInheritance";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "hack";
  }
  static constexpr std::size_t __fbthrift_num_fields = 0;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0};

  using __fbthrift_reflection_idents = folly::tag_t<
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = MigrationBlockingAllowInheritance;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  MigrationBlockingAllowInheritance() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  MigrationBlockingAllowInheritance(apache::thrift::FragileConstructor);

  MigrationBlockingAllowInheritance(MigrationBlockingAllowInheritance&&) = default;

  MigrationBlockingAllowInheritance(const MigrationBlockingAllowInheritance&) = default;


  MigrationBlockingAllowInheritance& operator=(MigrationBlockingAllowInheritance&&) = default;

  MigrationBlockingAllowInheritance& operator=(const MigrationBlockingAllowInheritance&) = default;

 public:

  bool operator==(const MigrationBlockingAllowInheritance&) const;
  bool operator<(const MigrationBlockingAllowInheritance&) const;

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<MigrationBlockingAllowInheritance>;
  friend void swap(MigrationBlockingAllowInheritance& a, MigrationBlockingAllowInheritance& b);
};

template <class Protocol_>
unsigned long MigrationBlockingAllowInheritance::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/hack.thrift", "name": "MigrationBlockingLegacyJSONSerialization", "kind": "struct" } */
class MigrationBlockingLegacyJSONSerialization final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/hack/MigrationBlockingLegacyJSONSerialization";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "hack";
  }
  static constexpr std::size_t __fbthrift_num_fields = 0;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0};

  using __fbthrift_reflection_idents = folly::tag_t<
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = MigrationBlockingLegacyJSONSerialization;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  MigrationBlockingLegacyJSONSerialization() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  MigrationBlockingLegacyJSONSerialization(apache::thrift::FragileConstructor);

  MigrationBlockingLegacyJSONSerialization(MigrationBlockingLegacyJSONSerialization&&) = default;

  MigrationBlockingLegacyJSONSerialization(const MigrationBlockingLegacyJSONSerialization&) = default;


  MigrationBlockingLegacyJSONSerialization& operator=(MigrationBlockingLegacyJSONSerialization&&) = default;

  MigrationBlockingLegacyJSONSerialization& operator=(const MigrationBlockingLegacyJSONSerialization&) = default;

 public:

  bool operator==(const MigrationBlockingLegacyJSONSerialization&) const;
  bool operator<(const MigrationBlockingLegacyJSONSerialization&) const;

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<MigrationBlockingLegacyJSONSerialization>;
  friend void swap(MigrationBlockingLegacyJSONSerialization& a, MigrationBlockingLegacyJSONSerialization& b);
};

template <class Protocol_>
unsigned long MigrationBlockingLegacyJSONSerialization::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


} // namespace facebook::thrift::annotation::hack

namespace apache::thrift::detail {
template <> struct TSchemaAssociation<::facebook::thrift::annotation::hack::FieldWrapper, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 4909176834206700596;
  static constexpr ::std::string_view definitionKey = {"\x48\x49\xe8\x85\xd0\xed\x3c\x28\x4a\x8f\x3a\xb8\x5d\x50\x3b\x0d", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::hack::Wrapper, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 4909176834206700596;
  static constexpr ::std::string_view definitionKey = {"\x5f\x27\x6e\xc3\xd3\xa7\xaf\x7f\x13\x95\x9d\xc5\x3b\x94\xa6\x0f", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::hack::Adapter, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 4909176834206700596;
  static constexpr ::std::string_view definitionKey = {"\xdd\xc9\x5b\xa1\xfb\x84\x8f\x33\xcb\xa3\x84\x36\x5f\xd5\x96\xe9", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::hack::SkipCodegen, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 4909176834206700596;
  static constexpr ::std::string_view definitionKey = {"\xa7\xb8\x56\x6b\x1a\xda\xc0\x72\x5b\xf2\x9c\xb9\xc1\xc2\x2c\xe8", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::hack::Name, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 4909176834206700596;
  static constexpr ::std::string_view definitionKey = {"\x05\xa7\xfd\xce\xd1\x08\x46\x53\xf1\x5a\x8e\xf9\x26\x81\x07\x3d", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::hack::UnionEnumAttributes, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 4909176834206700596;
  static constexpr ::std::string_view definitionKey = {"\x10\xde\xab\xd8\x84\x16\x96\x3c\xf5\x79\x55\x65\x33\xdf\xad\xa7", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::hack::StructTrait, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 4909176834206700596;
  static constexpr ::std::string_view definitionKey = {"\x14\x61\xa7\xad\x81\x91\x2e\x1c\xe1\xb0\xb7\x2a\xcb\x12\x93\x35", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::hack::Attributes, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 4909176834206700596;
  static constexpr ::std::string_view definitionKey = {"\xde\xb8\xea\xf9\x1b\x24\xa7\x0c\x51\x6f\xbe\x7f\x5e\x16\x60\xdb", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::hack::StructAsTrait, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 4909176834206700596;
  static constexpr ::std::string_view definitionKey = {"\x58\xb8\x27\x23\x70\xaf\x87\xbf\xdd\xae\x72\xd5\x73\xd4\xbf\xae", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::hack::ModuleInternal, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 4909176834206700596;
  static constexpr ::std::string_view definitionKey = {"\xf1\xf9\x11\x12\xcb\x0f\x23\x9e\x88\x8a\xc3\x30\x63\x3c\x51\x32", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::hack::GenerateClientMethodsWithHeaders, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 4909176834206700596;
  static constexpr ::std::string_view definitionKey = {"\x52\xf0\x5a\x61\x85\x88\x24\x54\x08\x78\xf9\xea\xf4\x7c\xe4\x8b", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::hack::MigrationBlockingAllowInheritance, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 4909176834206700596;
  static constexpr ::std::string_view definitionKey = {"\x14\x5d\xf5\x1e\x47\xae\x54\x5c\x82\x08\xc5\x5b\xec\xa1\xb7\xaf", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::hack::MigrationBlockingLegacyJSONSerialization, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 4909176834206700596;
  static constexpr ::std::string_view definitionKey = {"\x2d\xb9\x44\x6a\x2f\x9b\x7f\x78\x03\xec\x61\xd8\xfe\xf2\xe6\x02", 16};
};
} // namespace apache::thrift::detail
