/**
 * Autogenerated by Thrift for /opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/lib/thrift/type_id.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>
#include "thrift/lib/thrift/detail/TypeIdAdapter.h"

namespace apache::thrift {
namespace ident {
struct elementType;
struct elementType;
struct keyType;
struct valueType;
struct boolType;
struct byteType;
struct i16Type;
struct i32Type;
struct i64Type;
struct floatType;
struct doubleType;
struct stringType;
struct binaryType;
struct anyType;
struct userDefinedType;
struct listType;
struct setType;
struct mapType;
} // namespace ident
namespace detail {
#ifndef APACHE_THRIFT_ACCESSOR_elementType
#define APACHE_THRIFT_ACCESSOR_elementType
APACHE_THRIFT_DEFINE_ACCESSOR(elementType);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_elementType
#define APACHE_THRIFT_ACCESSOR_elementType
APACHE_THRIFT_DEFINE_ACCESSOR(elementType);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_keyType
#define APACHE_THRIFT_ACCESSOR_keyType
APACHE_THRIFT_DEFINE_ACCESSOR(keyType);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_valueType
#define APACHE_THRIFT_ACCESSOR_valueType
APACHE_THRIFT_DEFINE_ACCESSOR(valueType);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_boolType
#define APACHE_THRIFT_ACCESSOR_boolType
APACHE_THRIFT_DEFINE_ACCESSOR(boolType);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_byteType
#define APACHE_THRIFT_ACCESSOR_byteType
APACHE_THRIFT_DEFINE_ACCESSOR(byteType);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_i16Type
#define APACHE_THRIFT_ACCESSOR_i16Type
APACHE_THRIFT_DEFINE_ACCESSOR(i16Type);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_i32Type
#define APACHE_THRIFT_ACCESSOR_i32Type
APACHE_THRIFT_DEFINE_ACCESSOR(i32Type);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_i64Type
#define APACHE_THRIFT_ACCESSOR_i64Type
APACHE_THRIFT_DEFINE_ACCESSOR(i64Type);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_floatType
#define APACHE_THRIFT_ACCESSOR_floatType
APACHE_THRIFT_DEFINE_ACCESSOR(floatType);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_doubleType
#define APACHE_THRIFT_ACCESSOR_doubleType
APACHE_THRIFT_DEFINE_ACCESSOR(doubleType);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_stringType
#define APACHE_THRIFT_ACCESSOR_stringType
APACHE_THRIFT_DEFINE_ACCESSOR(stringType);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_binaryType
#define APACHE_THRIFT_ACCESSOR_binaryType
APACHE_THRIFT_DEFINE_ACCESSOR(binaryType);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_anyType
#define APACHE_THRIFT_ACCESSOR_anyType
APACHE_THRIFT_DEFINE_ACCESSOR(anyType);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_userDefinedType
#define APACHE_THRIFT_ACCESSOR_userDefinedType
APACHE_THRIFT_DEFINE_ACCESSOR(userDefinedType);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_listType
#define APACHE_THRIFT_ACCESSOR_listType
APACHE_THRIFT_DEFINE_ACCESSOR(listType);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_setType
#define APACHE_THRIFT_ACCESSOR_setType
APACHE_THRIFT_DEFINE_ACCESSOR(setType);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_mapType
#define APACHE_THRIFT_ACCESSOR_mapType
APACHE_THRIFT_DEFINE_ACCESSOR(mapType);
#endif
} // namespace detail
} // namespace apache::thrift

// BEGIN declare_enums
// END declare_enums
// BEGIN forward_declare
namespace apache::thrift::type_system {
class ListTypeIdStruct;
class SetTypeIdStruct;
class MapTypeIdStruct;
class BoolTypeIdStruct;
class ByteTypeIdStruct;
class I16TypeIdStruct;
class I32TypeIdStruct;
class I64TypeIdStruct;
class FloatTypeIdStruct;
class DoubleTypeIdStruct;
class StringTypeIdStruct;
class BinaryTypeIdStruct;
class AnyTypeIdStruct;
class TypeIdUnion;
} // namespace apache::thrift::type_system
// END forward_declare
namespace apache::thrift::detail::annotation {
} // namespace apache::thrift::detail::annotation

namespace apache::thrift::detail::qualifier {
template<>
struct is_cpp_ref_field_optional<::apache::thrift::type_system::ListTypeIdStruct,::apache::thrift::type::field_id<1>> : std::true_type{};
template<>
struct is_cpp_ref_field_optional<::apache::thrift::type_system::SetTypeIdStruct,::apache::thrift::type::field_id<1>> : std::true_type{};
template<>
struct is_cpp_ref_field_optional<::apache::thrift::type_system::MapTypeIdStruct,::apache::thrift::type::field_id<1>> : std::true_type{};
template<>
struct is_cpp_ref_field_optional<::apache::thrift::type_system::MapTypeIdStruct,::apache::thrift::type::field_id<2>> : std::true_type{};
} // namespace apache::thrift::detail::qualifier

// BEGIN hash_and_equal_to
// END hash_and_equal_to
namespace apache::thrift::type_system {
using ListTypeId = ::apache::thrift::type_system::detail::ListTypeId;
using SetTypeId = ::apache::thrift::type_system::detail::SetTypeId;
using MapTypeId = ::apache::thrift::type_system::detail::MapTypeId;
using BoolTypeId = ::apache::thrift::type_system::detail::BoolTypeId;
using ByteTypeId = ::apache::thrift::type_system::detail::ByteTypeId;
using I16TypeId = ::apache::thrift::type_system::detail::I16TypeId;
using I32TypeId = ::apache::thrift::type_system::detail::I32TypeId;
using I64TypeId = ::apache::thrift::type_system::detail::I64TypeId;
using FloatTypeId = ::apache::thrift::type_system::detail::FloatTypeId;
using DoubleTypeId = ::apache::thrift::type_system::detail::DoubleTypeId;
using StringTypeId = ::apache::thrift::type_system::detail::StringTypeId;
using BinaryTypeId = ::apache::thrift::type_system::detail::BinaryTypeId;
using AnyTypeId = ::apache::thrift::type_system::detail::AnyTypeId;
using TypeId = ::apache::thrift::type_system::detail::TypeId;
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/lib/thrift/type_id.thrift", "name": "Uri", "kind": "typedef" } */
using Uri = ::std::string;

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/lib/thrift/type_id.thrift", "name": "ListTypeIdStruct", "kind": "struct" } */
class ListTypeIdStruct 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/type_system/ListTypeId";
  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 "type_id";
  }
  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::elementType
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::TypeIdAdapter, ::apache::thrift::type::union_t<::apache::thrift::type_system::TypeIdUnion>>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

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


 public:

  ListTypeIdStruct();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  ListTypeIdStruct(apache::thrift::FragileConstructor, ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId> elementType__arg);

  ListTypeIdStruct(ListTypeIdStruct&&) noexcept;
  ListTypeIdStruct(const ListTypeIdStruct& src);


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

  ~ListTypeIdStruct();

 private:
  ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId> __fbthrift_field_elementType;

 public:

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

  /** Glean { "field": "elementType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&> elementType_ref() const& {
    return ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&>{this->__fbthrift_field_elementType};
  }

  /** Glean { "field": "elementType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&> elementType_ref() & {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&>{this->__fbthrift_field_elementType};
  }

  /** Glean { "field": "elementType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&> elementType_ref() && {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&>{static_cast<fbthrift_T&&>(this->__fbthrift_field_elementType)};
  }

  /** Glean { "field": "elementType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&> elementType() const& {
    return ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&>{this->__fbthrift_field_elementType};
  }

  /** Glean { "field": "elementType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&> elementType() & {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&>{this->__fbthrift_field_elementType};
  }

  /** Glean { "field": "elementType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&> elementType() && {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&>{static_cast<fbthrift_T&&>(this->__fbthrift_field_elementType)};
  }

  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<ListTypeIdStruct>;
  friend void swap(ListTypeIdStruct& a, ListTypeIdStruct& b);
};

template <class Protocol_>
unsigned long ListTypeIdStruct::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/lib/thrift/type_id.thrift", "name": "SetTypeIdStruct", "kind": "struct" } */
class SetTypeIdStruct 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/type_system/SetTypeId";
  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 "type_id";
  }
  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::elementType
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::TypeIdAdapter, ::apache::thrift::type::union_t<::apache::thrift::type_system::TypeIdUnion>>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

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


 public:

  SetTypeIdStruct();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  SetTypeIdStruct(apache::thrift::FragileConstructor, ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId> elementType__arg);

  SetTypeIdStruct(SetTypeIdStruct&&) noexcept;
  SetTypeIdStruct(const SetTypeIdStruct& src);


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

  ~SetTypeIdStruct();

 private:
  ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId> __fbthrift_field_elementType;

 public:

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

  /** Glean { "field": "elementType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&> elementType_ref() const& {
    return ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&>{this->__fbthrift_field_elementType};
  }

  /** Glean { "field": "elementType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&> elementType_ref() & {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&>{this->__fbthrift_field_elementType};
  }

  /** Glean { "field": "elementType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&> elementType_ref() && {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&>{static_cast<fbthrift_T&&>(this->__fbthrift_field_elementType)};
  }

  /** Glean { "field": "elementType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&> elementType() const& {
    return ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&>{this->__fbthrift_field_elementType};
  }

  /** Glean { "field": "elementType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&> elementType() & {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&>{this->__fbthrift_field_elementType};
  }

  /** Glean { "field": "elementType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&> elementType() && {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&>{static_cast<fbthrift_T&&>(this->__fbthrift_field_elementType)};
  }

  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<SetTypeIdStruct>;
  friend void swap(SetTypeIdStruct& a, SetTypeIdStruct& b);
};

template <class Protocol_>
unsigned long SetTypeIdStruct::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/lib/thrift/type_id.thrift", "name": "MapTypeIdStruct", "kind": "struct" } */
class MapTypeIdStruct 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/type_system/MapTypeId";
  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 "type_id";
  }
  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::keyType,
    ::apache::thrift::ident::valueType
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::TypeIdAdapter, ::apache::thrift::type::union_t<::apache::thrift::type_system::TypeIdUnion>>,
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::TypeIdAdapter, ::apache::thrift::type::union_t<::apache::thrift::type_system::TypeIdUnion>>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

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


 public:

  MapTypeIdStruct();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  MapTypeIdStruct(apache::thrift::FragileConstructor, ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId> keyType__arg, ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId> valueType__arg);

  MapTypeIdStruct(MapTypeIdStruct&&) noexcept;
  MapTypeIdStruct(const MapTypeIdStruct& src);


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

  ~MapTypeIdStruct();

 private:
  ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId> __fbthrift_field_keyType;
 private:
  ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId> __fbthrift_field_valueType;

 public:

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

  /** Glean { "field": "keyType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&> keyType_ref() const& {
    return ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&>{this->__fbthrift_field_keyType};
  }

  /** Glean { "field": "keyType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&> keyType_ref() & {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&>{this->__fbthrift_field_keyType};
  }

  /** Glean { "field": "keyType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&> keyType_ref() && {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&>{static_cast<fbthrift_T&&>(this->__fbthrift_field_keyType)};
  }

  /** Glean { "field": "keyType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&> keyType() const& {
    return ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&>{this->__fbthrift_field_keyType};
  }

  /** Glean { "field": "keyType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&> keyType() & {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&>{this->__fbthrift_field_keyType};
  }

  /** Glean { "field": "keyType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&> keyType() && {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&>{static_cast<fbthrift_T&&>(this->__fbthrift_field_keyType)};
  }

  /** Glean { "field": "valueType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&> valueType_ref() const& {
    return ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&>{this->__fbthrift_field_valueType};
  }

  /** Glean { "field": "valueType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&> valueType_ref() & {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&>{this->__fbthrift_field_valueType};
  }

  /** Glean { "field": "valueType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&> valueType_ref() && {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&>{static_cast<fbthrift_T&&>(this->__fbthrift_field_valueType)};
  }

  /** Glean { "field": "valueType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&> valueType() const& {
    return ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&>{this->__fbthrift_field_valueType};
  }

  /** Glean { "field": "valueType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&> valueType() & {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&>{this->__fbthrift_field_valueType};
  }

  /** Glean { "field": "valueType" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::type_system::TypeId>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&> valueType() && {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&>{static_cast<fbthrift_T&&>(this->__fbthrift_field_valueType)};
  }

  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<MapTypeIdStruct>;
  friend void swap(MapTypeIdStruct& a, MapTypeIdStruct& b);
};

template <class Protocol_>
unsigned long MapTypeIdStruct::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/lib/thrift/type_id.thrift", "name": "BoolTypeIdStruct", "kind": "struct" } */
class BoolTypeIdStruct 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/type_system/BoolTypeId";
  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 "type_id";
  }
  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 = BoolTypeIdStruct;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

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

  BoolTypeIdStruct(BoolTypeIdStruct&&) = default;

  BoolTypeIdStruct(const BoolTypeIdStruct&) = default;


  BoolTypeIdStruct& operator=(BoolTypeIdStruct&&) = default;

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

 public:

  bool operator==(const BoolTypeIdStruct&) const;
  bool operator<(const BoolTypeIdStruct&) 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<BoolTypeIdStruct>;
  friend void swap(BoolTypeIdStruct& a, BoolTypeIdStruct& b);
};

template <class Protocol_>
unsigned long BoolTypeIdStruct::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/lib/thrift/type_id.thrift", "name": "ByteTypeIdStruct", "kind": "struct" } */
class ByteTypeIdStruct 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/type_system/ByteTypeId";
  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 "type_id";
  }
  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 = ByteTypeIdStruct;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

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

  ByteTypeIdStruct(ByteTypeIdStruct&&) = default;

  ByteTypeIdStruct(const ByteTypeIdStruct&) = default;


  ByteTypeIdStruct& operator=(ByteTypeIdStruct&&) = default;

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

 public:

  bool operator==(const ByteTypeIdStruct&) const;
  bool operator<(const ByteTypeIdStruct&) 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<ByteTypeIdStruct>;
  friend void swap(ByteTypeIdStruct& a, ByteTypeIdStruct& b);
};

template <class Protocol_>
unsigned long ByteTypeIdStruct::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/lib/thrift/type_id.thrift", "name": "I16TypeIdStruct", "kind": "struct" } */
class I16TypeIdStruct 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/type_system/I16TypeId";
  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 "type_id";
  }
  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 = I16TypeIdStruct;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

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

  I16TypeIdStruct(I16TypeIdStruct&&) = default;

  I16TypeIdStruct(const I16TypeIdStruct&) = default;


  I16TypeIdStruct& operator=(I16TypeIdStruct&&) = default;

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

 public:

  bool operator==(const I16TypeIdStruct&) const;
  bool operator<(const I16TypeIdStruct&) 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<I16TypeIdStruct>;
  friend void swap(I16TypeIdStruct& a, I16TypeIdStruct& b);
};

template <class Protocol_>
unsigned long I16TypeIdStruct::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/lib/thrift/type_id.thrift", "name": "I32TypeIdStruct", "kind": "struct" } */
class I32TypeIdStruct 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/type_system/I32TypeId";
  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 "type_id";
  }
  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 = I32TypeIdStruct;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

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

  I32TypeIdStruct(I32TypeIdStruct&&) = default;

  I32TypeIdStruct(const I32TypeIdStruct&) = default;


  I32TypeIdStruct& operator=(I32TypeIdStruct&&) = default;

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

 public:

  bool operator==(const I32TypeIdStruct&) const;
  bool operator<(const I32TypeIdStruct&) 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<I32TypeIdStruct>;
  friend void swap(I32TypeIdStruct& a, I32TypeIdStruct& b);
};

template <class Protocol_>
unsigned long I32TypeIdStruct::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/lib/thrift/type_id.thrift", "name": "I64TypeIdStruct", "kind": "struct" } */
class I64TypeIdStruct 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/type_system/I64TypeId";
  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 "type_id";
  }
  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 = I64TypeIdStruct;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

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

  I64TypeIdStruct(I64TypeIdStruct&&) = default;

  I64TypeIdStruct(const I64TypeIdStruct&) = default;


  I64TypeIdStruct& operator=(I64TypeIdStruct&&) = default;

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

 public:

  bool operator==(const I64TypeIdStruct&) const;
  bool operator<(const I64TypeIdStruct&) 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<I64TypeIdStruct>;
  friend void swap(I64TypeIdStruct& a, I64TypeIdStruct& b);
};

template <class Protocol_>
unsigned long I64TypeIdStruct::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/lib/thrift/type_id.thrift", "name": "FloatTypeIdStruct", "kind": "struct" } */
class FloatTypeIdStruct 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/type_system/FloatTypeId";
  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 "type_id";
  }
  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 = FloatTypeIdStruct;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

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

  FloatTypeIdStruct(FloatTypeIdStruct&&) = default;

  FloatTypeIdStruct(const FloatTypeIdStruct&) = default;


  FloatTypeIdStruct& operator=(FloatTypeIdStruct&&) = default;

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

 public:

  bool operator==(const FloatTypeIdStruct&) const;
  bool operator<(const FloatTypeIdStruct&) 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<FloatTypeIdStruct>;
  friend void swap(FloatTypeIdStruct& a, FloatTypeIdStruct& b);
};

template <class Protocol_>
unsigned long FloatTypeIdStruct::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/lib/thrift/type_id.thrift", "name": "DoubleTypeIdStruct", "kind": "struct" } */
class DoubleTypeIdStruct 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/type_system/DoubleTypeId";
  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 "type_id";
  }
  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 = DoubleTypeIdStruct;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

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

  DoubleTypeIdStruct(DoubleTypeIdStruct&&) = default;

  DoubleTypeIdStruct(const DoubleTypeIdStruct&) = default;


  DoubleTypeIdStruct& operator=(DoubleTypeIdStruct&&) = default;

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

 public:

  bool operator==(const DoubleTypeIdStruct&) const;
  bool operator<(const DoubleTypeIdStruct&) 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<DoubleTypeIdStruct>;
  friend void swap(DoubleTypeIdStruct& a, DoubleTypeIdStruct& b);
};

template <class Protocol_>
unsigned long DoubleTypeIdStruct::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/lib/thrift/type_id.thrift", "name": "StringTypeIdStruct", "kind": "struct" } */
class StringTypeIdStruct 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/type_system/StringTypeId";
  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 "type_id";
  }
  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 = StringTypeIdStruct;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

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

  StringTypeIdStruct(StringTypeIdStruct&&) = default;

  StringTypeIdStruct(const StringTypeIdStruct&) = default;


  StringTypeIdStruct& operator=(StringTypeIdStruct&&) = default;

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

 public:

  bool operator==(const StringTypeIdStruct&) const;
  bool operator<(const StringTypeIdStruct&) 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<StringTypeIdStruct>;
  friend void swap(StringTypeIdStruct& a, StringTypeIdStruct& b);
};

template <class Protocol_>
unsigned long StringTypeIdStruct::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/lib/thrift/type_id.thrift", "name": "BinaryTypeIdStruct", "kind": "struct" } */
class BinaryTypeIdStruct 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/type_system/BinaryTypeId";
  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 "type_id";
  }
  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 = BinaryTypeIdStruct;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

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

  BinaryTypeIdStruct(BinaryTypeIdStruct&&) = default;

  BinaryTypeIdStruct(const BinaryTypeIdStruct&) = default;


  BinaryTypeIdStruct& operator=(BinaryTypeIdStruct&&) = default;

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

 public:

  bool operator==(const BinaryTypeIdStruct&) const;
  bool operator<(const BinaryTypeIdStruct&) 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<BinaryTypeIdStruct>;
  friend void swap(BinaryTypeIdStruct& a, BinaryTypeIdStruct& b);
};

template <class Protocol_>
unsigned long BinaryTypeIdStruct::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/lib/thrift/type_id.thrift", "name": "AnyTypeIdStruct", "kind": "struct" } */
class AnyTypeIdStruct 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/type_system/AnyTypeId";
  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 "type_id";
  }
  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 = AnyTypeIdStruct;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

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

  AnyTypeIdStruct(AnyTypeIdStruct&&) = default;

  AnyTypeIdStruct(const AnyTypeIdStruct&) = default;


  AnyTypeIdStruct& operator=(AnyTypeIdStruct&&) = default;

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

 public:

  bool operator==(const AnyTypeIdStruct&) const;
  bool operator<(const AnyTypeIdStruct&) 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<AnyTypeIdStruct>;
  friend void swap(AnyTypeIdStruct& a, AnyTypeIdStruct& b);
};

template <class Protocol_>
unsigned long AnyTypeIdStruct::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/lib/thrift/type_id.thrift", "name": "TypeIdUnion", "kind": "union" } */
class TypeIdUnion 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/type_system/TypeId";
  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 "type_id";
  }
  static constexpr std::size_t __fbthrift_num_fields = 14;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::boolType,
    ::apache::thrift::ident::byteType,
    ::apache::thrift::ident::i16Type,
    ::apache::thrift::ident::i32Type,
    ::apache::thrift::ident::i64Type,
    ::apache::thrift::ident::floatType,
    ::apache::thrift::ident::doubleType,
    ::apache::thrift::ident::stringType,
    ::apache::thrift::ident::binaryType,
    ::apache::thrift::ident::anyType,
    ::apache::thrift::ident::userDefinedType,
    ::apache::thrift::ident::listType,
    ::apache::thrift::ident::setType,
    ::apache::thrift::ident::mapType
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::BoolTypeIdAdapter, ::apache::thrift::type::struct_t<::apache::thrift::type_system::BoolTypeIdStruct>>,
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::ByteTypeIdAdapter, ::apache::thrift::type::struct_t<::apache::thrift::type_system::ByteTypeIdStruct>>,
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::I16TypeIdAdapter, ::apache::thrift::type::struct_t<::apache::thrift::type_system::I16TypeIdStruct>>,
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::I32TypeIdAdapter, ::apache::thrift::type::struct_t<::apache::thrift::type_system::I32TypeIdStruct>>,
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::I64TypeIdAdapter, ::apache::thrift::type::struct_t<::apache::thrift::type_system::I64TypeIdStruct>>,
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::FloatTypeIdAdapter, ::apache::thrift::type::struct_t<::apache::thrift::type_system::FloatTypeIdStruct>>,
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::DoubleTypeIdAdapter, ::apache::thrift::type::struct_t<::apache::thrift::type_system::DoubleTypeIdStruct>>,
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::StringTypeIdAdapter, ::apache::thrift::type::struct_t<::apache::thrift::type_system::StringTypeIdStruct>>,
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::BinaryTypeIdAdapter, ::apache::thrift::type::struct_t<::apache::thrift::type_system::BinaryTypeIdStruct>>,
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::AnyTypeIdAdapter, ::apache::thrift::type::struct_t<::apache::thrift::type_system::AnyTypeIdStruct>>,
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::ListTypeIdAdapter, ::apache::thrift::type::struct_t<::apache::thrift::type_system::ListTypeIdStruct>>,
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::SetTypeIdAdapter, ::apache::thrift::type::struct_t<::apache::thrift::type_system::SetTypeIdStruct>>,
    ::apache::thrift::type::adapted<::apache::thrift::type_system::detail::MapTypeIdAdapter, ::apache::thrift::type::struct_t<::apache::thrift::type_system::MapTypeIdStruct>>
  >;
  void __fbthrift_clear();
  void __fbthrift_destruct();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = TypeIdUnion;
  static constexpr bool __fbthrift_cpp2_is_union =
    true;


 public:
  enum class Type : int {
    __EMPTY__ = 0,
    boolType = 1,
    byteType = 2,
    i16Type = 3,
    i32Type = 4,
    i64Type = 5,
    floatType = 6,
    doubleType = 7,
    stringType = 8,
    binaryType = 9,
    anyType = 10,
    userDefinedType = 11,
    listType = 12,
    setType = 13,
    mapType = 14,
  } ;

  TypeIdUnion()
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {}

  TypeIdUnion(TypeIdUnion&& rhs) noexcept
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {
    if (this == &rhs) { return; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        return;
      }
      case Type::boolType:
      {
        set_boolType(std::move(rhs.value_.boolType));
        break;
      }
      case Type::byteType:
      {
        set_byteType(std::move(rhs.value_.byteType));
        break;
      }
      case Type::i16Type:
      {
        set_i16Type(std::move(rhs.value_.i16Type));
        break;
      }
      case Type::i32Type:
      {
        set_i32Type(std::move(rhs.value_.i32Type));
        break;
      }
      case Type::i64Type:
      {
        set_i64Type(std::move(rhs.value_.i64Type));
        break;
      }
      case Type::floatType:
      {
        set_floatType(std::move(rhs.value_.floatType));
        break;
      }
      case Type::doubleType:
      {
        set_doubleType(std::move(rhs.value_.doubleType));
        break;
      }
      case Type::stringType:
      {
        set_stringType(std::move(rhs.value_.stringType));
        break;
      }
      case Type::binaryType:
      {
        set_binaryType(std::move(rhs.value_.binaryType));
        break;
      }
      case Type::anyType:
      {
        set_anyType(std::move(rhs.value_.anyType));
        break;
      }
      case Type::userDefinedType:
      {
        set_userDefinedType(std::move(rhs.value_.userDefinedType));
        break;
      }
      case Type::listType:
      {
        set_listType(std::move(rhs.value_.listType));
        break;
      }
      case Type::setType:
      {
        set_setType(std::move(rhs.value_.setType));
        break;
      }
      case Type::mapType:
      {
        set_mapType(std::move(rhs.value_.mapType));
        break;
      }
      default:
      {
        assert(false);
        break;
      }
    }
    apache::thrift::clear(rhs);
  }

  TypeIdUnion(const TypeIdUnion& rhs);

  TypeIdUnion& operator=(TypeIdUnion&& rhs) noexcept {
    if (this == &rhs) { return *this; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        __fbthrift_clear();
        return *this;
      }
      case Type::boolType:
      {
        set_boolType(std::move(rhs.value_.boolType));
        break;
      }
      case Type::byteType:
      {
        set_byteType(std::move(rhs.value_.byteType));
        break;
      }
      case Type::i16Type:
      {
        set_i16Type(std::move(rhs.value_.i16Type));
        break;
      }
      case Type::i32Type:
      {
        set_i32Type(std::move(rhs.value_.i32Type));
        break;
      }
      case Type::i64Type:
      {
        set_i64Type(std::move(rhs.value_.i64Type));
        break;
      }
      case Type::floatType:
      {
        set_floatType(std::move(rhs.value_.floatType));
        break;
      }
      case Type::doubleType:
      {
        set_doubleType(std::move(rhs.value_.doubleType));
        break;
      }
      case Type::stringType:
      {
        set_stringType(std::move(rhs.value_.stringType));
        break;
      }
      case Type::binaryType:
      {
        set_binaryType(std::move(rhs.value_.binaryType));
        break;
      }
      case Type::anyType:
      {
        set_anyType(std::move(rhs.value_.anyType));
        break;
      }
      case Type::userDefinedType:
      {
        set_userDefinedType(std::move(rhs.value_.userDefinedType));
        break;
      }
      case Type::listType:
      {
        set_listType(std::move(rhs.value_.listType));
        break;
      }
      case Type::setType:
      {
        set_setType(std::move(rhs.value_.setType));
        break;
      }
      case Type::mapType:
      {
        set_mapType(std::move(rhs.value_.mapType));
        break;
      }
      default:
      {
        assert(false);
        __fbthrift_clear();
      }
    }
    apache::thrift::clear(rhs);
    return *this;
  }

  TypeIdUnion& operator=(const TypeIdUnion& rhs);

  ~TypeIdUnion();

  union storage_type {
    ::apache::thrift::type_system::BoolTypeId boolType;
    ::apache::thrift::type_system::ByteTypeId byteType;
    ::apache::thrift::type_system::I16TypeId i16Type;
    ::apache::thrift::type_system::I32TypeId i32Type;
    ::apache::thrift::type_system::I64TypeId i64Type;
    ::apache::thrift::type_system::FloatTypeId floatType;
    ::apache::thrift::type_system::DoubleTypeId doubleType;
    ::apache::thrift::type_system::StringTypeId stringType;
    ::apache::thrift::type_system::BinaryTypeId binaryType;
    ::apache::thrift::type_system::AnyTypeId anyType;
    ::apache::thrift::type_system::Uri userDefinedType;
    ::apache::thrift::type_system::ListTypeId listType;
    ::apache::thrift::type_system::SetTypeId setType;
    ::apache::thrift::type_system::MapTypeId mapType;

    storage_type() {}
    ~storage_type() {}
  } ;

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

  /** Glean { "field": "boolType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::BoolTypeId& set_boolType(::apache::thrift::type_system::BoolTypeId const &t) {
    using T0 = ::apache::thrift::type_system::BoolTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::boolType);
    ::new (std::addressof(value_.boolType)) T(t);
    return value_.boolType;
  }

  /** Glean { "field": "boolType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::BoolTypeId& set_boolType(::apache::thrift::type_system::BoolTypeId&& t) {
    using T0 = ::apache::thrift::type_system::BoolTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::boolType);
    ::new (std::addressof(value_.boolType)) T(std::move(t));
    return value_.boolType;
  }

  /** Glean { "field": "boolType" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::type_system::BoolTypeId, T...>> ::apache::thrift::type_system::BoolTypeId& set_boolType(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::boolType);
    ::new (std::addressof(value_.boolType)) ::apache::thrift::type_system::BoolTypeId(std::forward<T>(t)...);
    return value_.boolType;
  }

  /** Glean { "field": "byteType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::ByteTypeId& set_byteType(::apache::thrift::type_system::ByteTypeId const &t) {
    using T0 = ::apache::thrift::type_system::ByteTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::byteType);
    ::new (std::addressof(value_.byteType)) T(t);
    return value_.byteType;
  }

  /** Glean { "field": "byteType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::ByteTypeId& set_byteType(::apache::thrift::type_system::ByteTypeId&& t) {
    using T0 = ::apache::thrift::type_system::ByteTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::byteType);
    ::new (std::addressof(value_.byteType)) T(std::move(t));
    return value_.byteType;
  }

  /** Glean { "field": "byteType" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::type_system::ByteTypeId, T...>> ::apache::thrift::type_system::ByteTypeId& set_byteType(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::byteType);
    ::new (std::addressof(value_.byteType)) ::apache::thrift::type_system::ByteTypeId(std::forward<T>(t)...);
    return value_.byteType;
  }

  /** Glean { "field": "i16Type" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::I16TypeId& set_i16Type(::apache::thrift::type_system::I16TypeId const &t) {
    using T0 = ::apache::thrift::type_system::I16TypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::i16Type);
    ::new (std::addressof(value_.i16Type)) T(t);
    return value_.i16Type;
  }

  /** Glean { "field": "i16Type" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::I16TypeId& set_i16Type(::apache::thrift::type_system::I16TypeId&& t) {
    using T0 = ::apache::thrift::type_system::I16TypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::i16Type);
    ::new (std::addressof(value_.i16Type)) T(std::move(t));
    return value_.i16Type;
  }

  /** Glean { "field": "i16Type" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::type_system::I16TypeId, T...>> ::apache::thrift::type_system::I16TypeId& set_i16Type(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::i16Type);
    ::new (std::addressof(value_.i16Type)) ::apache::thrift::type_system::I16TypeId(std::forward<T>(t)...);
    return value_.i16Type;
  }

  /** Glean { "field": "i32Type" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::I32TypeId& set_i32Type(::apache::thrift::type_system::I32TypeId const &t) {
    using T0 = ::apache::thrift::type_system::I32TypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::i32Type);
    ::new (std::addressof(value_.i32Type)) T(t);
    return value_.i32Type;
  }

  /** Glean { "field": "i32Type" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::I32TypeId& set_i32Type(::apache::thrift::type_system::I32TypeId&& t) {
    using T0 = ::apache::thrift::type_system::I32TypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::i32Type);
    ::new (std::addressof(value_.i32Type)) T(std::move(t));
    return value_.i32Type;
  }

  /** Glean { "field": "i32Type" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::type_system::I32TypeId, T...>> ::apache::thrift::type_system::I32TypeId& set_i32Type(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::i32Type);
    ::new (std::addressof(value_.i32Type)) ::apache::thrift::type_system::I32TypeId(std::forward<T>(t)...);
    return value_.i32Type;
  }

  /** Glean { "field": "i64Type" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::I64TypeId& set_i64Type(::apache::thrift::type_system::I64TypeId const &t) {
    using T0 = ::apache::thrift::type_system::I64TypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::i64Type);
    ::new (std::addressof(value_.i64Type)) T(t);
    return value_.i64Type;
  }

  /** Glean { "field": "i64Type" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::I64TypeId& set_i64Type(::apache::thrift::type_system::I64TypeId&& t) {
    using T0 = ::apache::thrift::type_system::I64TypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::i64Type);
    ::new (std::addressof(value_.i64Type)) T(std::move(t));
    return value_.i64Type;
  }

  /** Glean { "field": "i64Type" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::type_system::I64TypeId, T...>> ::apache::thrift::type_system::I64TypeId& set_i64Type(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::i64Type);
    ::new (std::addressof(value_.i64Type)) ::apache::thrift::type_system::I64TypeId(std::forward<T>(t)...);
    return value_.i64Type;
  }

  /** Glean { "field": "floatType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::FloatTypeId& set_floatType(::apache::thrift::type_system::FloatTypeId const &t) {
    using T0 = ::apache::thrift::type_system::FloatTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::floatType);
    ::new (std::addressof(value_.floatType)) T(t);
    return value_.floatType;
  }

  /** Glean { "field": "floatType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::FloatTypeId& set_floatType(::apache::thrift::type_system::FloatTypeId&& t) {
    using T0 = ::apache::thrift::type_system::FloatTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::floatType);
    ::new (std::addressof(value_.floatType)) T(std::move(t));
    return value_.floatType;
  }

  /** Glean { "field": "floatType" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::type_system::FloatTypeId, T...>> ::apache::thrift::type_system::FloatTypeId& set_floatType(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::floatType);
    ::new (std::addressof(value_.floatType)) ::apache::thrift::type_system::FloatTypeId(std::forward<T>(t)...);
    return value_.floatType;
  }

  /** Glean { "field": "doubleType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::DoubleTypeId& set_doubleType(::apache::thrift::type_system::DoubleTypeId const &t) {
    using T0 = ::apache::thrift::type_system::DoubleTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::doubleType);
    ::new (std::addressof(value_.doubleType)) T(t);
    return value_.doubleType;
  }

  /** Glean { "field": "doubleType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::DoubleTypeId& set_doubleType(::apache::thrift::type_system::DoubleTypeId&& t) {
    using T0 = ::apache::thrift::type_system::DoubleTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::doubleType);
    ::new (std::addressof(value_.doubleType)) T(std::move(t));
    return value_.doubleType;
  }

  /** Glean { "field": "doubleType" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::type_system::DoubleTypeId, T...>> ::apache::thrift::type_system::DoubleTypeId& set_doubleType(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::doubleType);
    ::new (std::addressof(value_.doubleType)) ::apache::thrift::type_system::DoubleTypeId(std::forward<T>(t)...);
    return value_.doubleType;
  }

  /** Glean { "field": "stringType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::StringTypeId& set_stringType(::apache::thrift::type_system::StringTypeId const &t) {
    using T0 = ::apache::thrift::type_system::StringTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::stringType);
    ::new (std::addressof(value_.stringType)) T(t);
    return value_.stringType;
  }

  /** Glean { "field": "stringType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::StringTypeId& set_stringType(::apache::thrift::type_system::StringTypeId&& t) {
    using T0 = ::apache::thrift::type_system::StringTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::stringType);
    ::new (std::addressof(value_.stringType)) T(std::move(t));
    return value_.stringType;
  }

  /** Glean { "field": "stringType" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::type_system::StringTypeId, T...>> ::apache::thrift::type_system::StringTypeId& set_stringType(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::stringType);
    ::new (std::addressof(value_.stringType)) ::apache::thrift::type_system::StringTypeId(std::forward<T>(t)...);
    return value_.stringType;
  }

  /** Glean { "field": "binaryType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::BinaryTypeId& set_binaryType(::apache::thrift::type_system::BinaryTypeId const &t) {
    using T0 = ::apache::thrift::type_system::BinaryTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::binaryType);
    ::new (std::addressof(value_.binaryType)) T(t);
    return value_.binaryType;
  }

  /** Glean { "field": "binaryType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::BinaryTypeId& set_binaryType(::apache::thrift::type_system::BinaryTypeId&& t) {
    using T0 = ::apache::thrift::type_system::BinaryTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::binaryType);
    ::new (std::addressof(value_.binaryType)) T(std::move(t));
    return value_.binaryType;
  }

  /** Glean { "field": "binaryType" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::type_system::BinaryTypeId, T...>> ::apache::thrift::type_system::BinaryTypeId& set_binaryType(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::binaryType);
    ::new (std::addressof(value_.binaryType)) ::apache::thrift::type_system::BinaryTypeId(std::forward<T>(t)...);
    return value_.binaryType;
  }

  /** Glean { "field": "anyType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::AnyTypeId& set_anyType(::apache::thrift::type_system::AnyTypeId const &t) {
    using T0 = ::apache::thrift::type_system::AnyTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::anyType);
    ::new (std::addressof(value_.anyType)) T(t);
    return value_.anyType;
  }

  /** Glean { "field": "anyType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::AnyTypeId& set_anyType(::apache::thrift::type_system::AnyTypeId&& t) {
    using T0 = ::apache::thrift::type_system::AnyTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::anyType);
    ::new (std::addressof(value_.anyType)) T(std::move(t));
    return value_.anyType;
  }

  /** Glean { "field": "anyType" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::type_system::AnyTypeId, T...>> ::apache::thrift::type_system::AnyTypeId& set_anyType(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::anyType);
    ::new (std::addressof(value_.anyType)) ::apache::thrift::type_system::AnyTypeId(std::forward<T>(t)...);
    return value_.anyType;
  }

  /** Glean { "field": "userDefinedType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::Uri& set_userDefinedType(::apache::thrift::type_system::Uri const &t) {
    using T0 = ::apache::thrift::type_system::Uri;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::userDefinedType);
    ::new (std::addressof(value_.userDefinedType)) T(t);
    return value_.userDefinedType;
  }

  /** Glean { "field": "userDefinedType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::Uri& set_userDefinedType(::apache::thrift::type_system::Uri&& t) {
    using T0 = ::apache::thrift::type_system::Uri;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::userDefinedType);
    ::new (std::addressof(value_.userDefinedType)) T(std::move(t));
    return value_.userDefinedType;
  }

  /** Glean { "field": "userDefinedType" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::type_system::Uri, T...>> ::apache::thrift::type_system::Uri& set_userDefinedType(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::userDefinedType);
    ::new (std::addressof(value_.userDefinedType)) ::apache::thrift::type_system::Uri(std::forward<T>(t)...);
    return value_.userDefinedType;
  }


  /** Glean { "field": "listType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::ListTypeId& set_listType(::apache::thrift::type_system::ListTypeId const &t) {
    using T0 = ::apache::thrift::type_system::ListTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::listType);
    ::new (std::addressof(value_.listType)) T(t);
    return value_.listType;
  }

  /** Glean { "field": "listType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::ListTypeId& set_listType(::apache::thrift::type_system::ListTypeId&& t) {
    using T0 = ::apache::thrift::type_system::ListTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::listType);
    ::new (std::addressof(value_.listType)) T(std::move(t));
    return value_.listType;
  }

  /** Glean { "field": "listType" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::type_system::ListTypeId, T...>> ::apache::thrift::type_system::ListTypeId& set_listType(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::listType);
    ::new (std::addressof(value_.listType)) ::apache::thrift::type_system::ListTypeId(std::forward<T>(t)...);
    return value_.listType;
  }

  /** Glean { "field": "setType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::SetTypeId& set_setType(::apache::thrift::type_system::SetTypeId const &t) {
    using T0 = ::apache::thrift::type_system::SetTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::setType);
    ::new (std::addressof(value_.setType)) T(t);
    return value_.setType;
  }

  /** Glean { "field": "setType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::SetTypeId& set_setType(::apache::thrift::type_system::SetTypeId&& t) {
    using T0 = ::apache::thrift::type_system::SetTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::setType);
    ::new (std::addressof(value_.setType)) T(std::move(t));
    return value_.setType;
  }

  /** Glean { "field": "setType" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::type_system::SetTypeId, T...>> ::apache::thrift::type_system::SetTypeId& set_setType(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::setType);
    ::new (std::addressof(value_.setType)) ::apache::thrift::type_system::SetTypeId(std::forward<T>(t)...);
    return value_.setType;
  }

  /** Glean { "field": "mapType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::MapTypeId& set_mapType(::apache::thrift::type_system::MapTypeId const &t) {
    using T0 = ::apache::thrift::type_system::MapTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::mapType);
    ::new (std::addressof(value_.mapType)) T(t);
    return value_.mapType;
  }

  /** Glean { "field": "mapType" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::type_system::MapTypeId& set_mapType(::apache::thrift::type_system::MapTypeId&& t) {
    using T0 = ::apache::thrift::type_system::MapTypeId;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::mapType);
    ::new (std::addressof(value_.mapType)) T(std::move(t));
    return value_.mapType;
  }

  /** Glean { "field": "mapType" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::type_system::MapTypeId, T...>> ::apache::thrift::type_system::MapTypeId& set_mapType(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::mapType);
    ::new (std::addressof(value_.mapType)) ::apache::thrift::type_system::MapTypeId(std::forward<T>(t)...);
    return value_.mapType;
  }

  /** Glean { "field": "boolType" } */
  ::apache::thrift::type_system::BoolTypeId const& get_boolType() const {
    if (getType() != Type::boolType) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.boolType;
  }

  /** Glean { "field": "byteType" } */
  ::apache::thrift::type_system::ByteTypeId const& get_byteType() const {
    if (getType() != Type::byteType) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.byteType;
  }

  /** Glean { "field": "i16Type" } */
  ::apache::thrift::type_system::I16TypeId const& get_i16Type() const {
    if (getType() != Type::i16Type) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.i16Type;
  }

  /** Glean { "field": "i32Type" } */
  ::apache::thrift::type_system::I32TypeId const& get_i32Type() const {
    if (getType() != Type::i32Type) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.i32Type;
  }

  /** Glean { "field": "i64Type" } */
  ::apache::thrift::type_system::I64TypeId const& get_i64Type() const {
    if (getType() != Type::i64Type) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.i64Type;
  }

  /** Glean { "field": "floatType" } */
  ::apache::thrift::type_system::FloatTypeId const& get_floatType() const {
    if (getType() != Type::floatType) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.floatType;
  }

  /** Glean { "field": "doubleType" } */
  ::apache::thrift::type_system::DoubleTypeId const& get_doubleType() const {
    if (getType() != Type::doubleType) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.doubleType;
  }

  /** Glean { "field": "stringType" } */
  ::apache::thrift::type_system::StringTypeId const& get_stringType() const {
    if (getType() != Type::stringType) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.stringType;
  }

  /** Glean { "field": "binaryType" } */
  ::apache::thrift::type_system::BinaryTypeId const& get_binaryType() const {
    if (getType() != Type::binaryType) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.binaryType;
  }

  /** Glean { "field": "anyType" } */
  ::apache::thrift::type_system::AnyTypeId const& get_anyType() const {
    if (getType() != Type::anyType) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.anyType;
  }

  /** Glean { "field": "userDefinedType" } */
  ::apache::thrift::type_system::Uri const& get_userDefinedType() const {
    if (getType() != Type::userDefinedType) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.userDefinedType;
  }

  /** Glean { "field": "listType" } */
  ::apache::thrift::type_system::ListTypeId const& get_listType() const {
    if (getType() != Type::listType) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.listType;
  }

  /** Glean { "field": "setType" } */
  ::apache::thrift::type_system::SetTypeId const& get_setType() const {
    if (getType() != Type::setType) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.setType;
  }

  /** Glean { "field": "mapType" } */
  ::apache::thrift::type_system::MapTypeId const& get_mapType() const {
    if (getType() != Type::mapType) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.mapType;
  }

  ::apache::thrift::type_system::BoolTypeId& mutable_boolType() {
    assert(getType() == Type::boolType);
    return value_.boolType;
  }

  ::apache::thrift::type_system::ByteTypeId& mutable_byteType() {
    assert(getType() == Type::byteType);
    return value_.byteType;
  }

  ::apache::thrift::type_system::I16TypeId& mutable_i16Type() {
    assert(getType() == Type::i16Type);
    return value_.i16Type;
  }

  ::apache::thrift::type_system::I32TypeId& mutable_i32Type() {
    assert(getType() == Type::i32Type);
    return value_.i32Type;
  }

  ::apache::thrift::type_system::I64TypeId& mutable_i64Type() {
    assert(getType() == Type::i64Type);
    return value_.i64Type;
  }

  ::apache::thrift::type_system::FloatTypeId& mutable_floatType() {
    assert(getType() == Type::floatType);
    return value_.floatType;
  }

  ::apache::thrift::type_system::DoubleTypeId& mutable_doubleType() {
    assert(getType() == Type::doubleType);
    return value_.doubleType;
  }

  ::apache::thrift::type_system::StringTypeId& mutable_stringType() {
    assert(getType() == Type::stringType);
    return value_.stringType;
  }

  ::apache::thrift::type_system::BinaryTypeId& mutable_binaryType() {
    assert(getType() == Type::binaryType);
    return value_.binaryType;
  }

  ::apache::thrift::type_system::AnyTypeId& mutable_anyType() {
    assert(getType() == Type::anyType);
    return value_.anyType;
  }

  ::apache::thrift::type_system::Uri& mutable_userDefinedType() {
    assert(getType() == Type::userDefinedType);
    return value_.userDefinedType;
  }

  ::apache::thrift::type_system::ListTypeId& mutable_listType() {
    assert(getType() == Type::listType);
    return value_.listType;
  }

  ::apache::thrift::type_system::SetTypeId& mutable_setType() {
    assert(getType() == Type::setType);
    return value_.setType;
  }

  ::apache::thrift::type_system::MapTypeId& mutable_mapType() {
    assert(getType() == Type::mapType);
    return value_.mapType;
  }

  template <typename..., typename T = ::apache::thrift::type_system::BoolTypeId>
  T move_boolType() {
    assert(getType() == Type::boolType);
    return std::move(value_.boolType);
  }

  template <typename..., typename T = ::apache::thrift::type_system::ByteTypeId>
  T move_byteType() {
    assert(getType() == Type::byteType);
    return std::move(value_.byteType);
  }

  template <typename..., typename T = ::apache::thrift::type_system::I16TypeId>
  T move_i16Type() {
    assert(getType() == Type::i16Type);
    return std::move(value_.i16Type);
  }

  template <typename..., typename T = ::apache::thrift::type_system::I32TypeId>
  T move_i32Type() {
    assert(getType() == Type::i32Type);
    return std::move(value_.i32Type);
  }

  template <typename..., typename T = ::apache::thrift::type_system::I64TypeId>
  T move_i64Type() {
    assert(getType() == Type::i64Type);
    return std::move(value_.i64Type);
  }

  template <typename..., typename T = ::apache::thrift::type_system::FloatTypeId>
  T move_floatType() {
    assert(getType() == Type::floatType);
    return std::move(value_.floatType);
  }

  template <typename..., typename T = ::apache::thrift::type_system::DoubleTypeId>
  T move_doubleType() {
    assert(getType() == Type::doubleType);
    return std::move(value_.doubleType);
  }

  template <typename..., typename T = ::apache::thrift::type_system::StringTypeId>
  T move_stringType() {
    assert(getType() == Type::stringType);
    return std::move(value_.stringType);
  }

  template <typename..., typename T = ::apache::thrift::type_system::BinaryTypeId>
  T move_binaryType() {
    assert(getType() == Type::binaryType);
    return std::move(value_.binaryType);
  }

  template <typename..., typename T = ::apache::thrift::type_system::AnyTypeId>
  T move_anyType() {
    assert(getType() == Type::anyType);
    return std::move(value_.anyType);
  }

  template <typename..., typename T = ::apache::thrift::type_system::Uri>
  T move_userDefinedType() {
    assert(getType() == Type::userDefinedType);
    return std::move(value_.userDefinedType);
  }

  template <typename..., typename T = ::apache::thrift::type_system::ListTypeId>
  T move_listType() {
    assert(getType() == Type::listType);
    return std::move(value_.listType);
  }

  template <typename..., typename T = ::apache::thrift::type_system::SetTypeId>
  T move_setType() {
    assert(getType() == Type::setType);
    return std::move(value_.setType);
  }

  template <typename..., typename T = ::apache::thrift::type_system::MapTypeId>
  T move_mapType() {
    assert(getType() == Type::mapType);
    return std::move(value_.mapType);
  }

  /** Glean { "field": "boolType" } */
  template <typename..., typename T = ::apache::thrift::type_system::BoolTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> boolType_ref() const& {
    return {value_.boolType, fbthrift_type_, folly::to_underlying(Type::boolType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "boolType" } */
  template <typename..., typename T = ::apache::thrift::type_system::BoolTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> boolType_ref() & {
    return {value_.boolType, fbthrift_type_, folly::to_underlying(Type::boolType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "boolType" } */
  template <typename..., typename T = ::apache::thrift::type_system::BoolTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> boolType_ref() && {
    return {std::move(value_.boolType), fbthrift_type_, folly::to_underlying(Type::boolType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "boolType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::type_system::BoolTypeId&> boolType() const& {
    return {value_.boolType, fbthrift_type_, folly::to_underlying(Type::boolType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "boolType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::BoolTypeId&> boolType() & {
    return {value_.boolType, fbthrift_type_, folly::to_underlying(Type::boolType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "boolType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::BoolTypeId&&> boolType() && {
    return {std::move(value_.boolType), fbthrift_type_, folly::to_underlying(Type::boolType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "byteType" } */
  template <typename..., typename T = ::apache::thrift::type_system::ByteTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> byteType_ref() const& {
    return {value_.byteType, fbthrift_type_, folly::to_underlying(Type::byteType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "byteType" } */
  template <typename..., typename T = ::apache::thrift::type_system::ByteTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> byteType_ref() & {
    return {value_.byteType, fbthrift_type_, folly::to_underlying(Type::byteType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "byteType" } */
  template <typename..., typename T = ::apache::thrift::type_system::ByteTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> byteType_ref() && {
    return {std::move(value_.byteType), fbthrift_type_, folly::to_underlying(Type::byteType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "byteType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::type_system::ByteTypeId&> byteType() const& {
    return {value_.byteType, fbthrift_type_, folly::to_underlying(Type::byteType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "byteType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::ByteTypeId&> byteType() & {
    return {value_.byteType, fbthrift_type_, folly::to_underlying(Type::byteType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "byteType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::ByteTypeId&&> byteType() && {
    return {std::move(value_.byteType), fbthrift_type_, folly::to_underlying(Type::byteType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "i16Type" } */
  template <typename..., typename T = ::apache::thrift::type_system::I16TypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> i16Type_ref() const& {
    return {value_.i16Type, fbthrift_type_, folly::to_underlying(Type::i16Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i16Type" } */
  template <typename..., typename T = ::apache::thrift::type_system::I16TypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> i16Type_ref() & {
    return {value_.i16Type, fbthrift_type_, folly::to_underlying(Type::i16Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i16Type" } */
  template <typename..., typename T = ::apache::thrift::type_system::I16TypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> i16Type_ref() && {
    return {std::move(value_.i16Type), fbthrift_type_, folly::to_underlying(Type::i16Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i16Type" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::type_system::I16TypeId&> i16Type() const& {
    return {value_.i16Type, fbthrift_type_, folly::to_underlying(Type::i16Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i16Type" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::I16TypeId&> i16Type() & {
    return {value_.i16Type, fbthrift_type_, folly::to_underlying(Type::i16Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i16Type" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::I16TypeId&&> i16Type() && {
    return {std::move(value_.i16Type), fbthrift_type_, folly::to_underlying(Type::i16Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "i32Type" } */
  template <typename..., typename T = ::apache::thrift::type_system::I32TypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> i32Type_ref() const& {
    return {value_.i32Type, fbthrift_type_, folly::to_underlying(Type::i32Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i32Type" } */
  template <typename..., typename T = ::apache::thrift::type_system::I32TypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> i32Type_ref() & {
    return {value_.i32Type, fbthrift_type_, folly::to_underlying(Type::i32Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i32Type" } */
  template <typename..., typename T = ::apache::thrift::type_system::I32TypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> i32Type_ref() && {
    return {std::move(value_.i32Type), fbthrift_type_, folly::to_underlying(Type::i32Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i32Type" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::type_system::I32TypeId&> i32Type() const& {
    return {value_.i32Type, fbthrift_type_, folly::to_underlying(Type::i32Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i32Type" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::I32TypeId&> i32Type() & {
    return {value_.i32Type, fbthrift_type_, folly::to_underlying(Type::i32Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i32Type" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::I32TypeId&&> i32Type() && {
    return {std::move(value_.i32Type), fbthrift_type_, folly::to_underlying(Type::i32Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "i64Type" } */
  template <typename..., typename T = ::apache::thrift::type_system::I64TypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> i64Type_ref() const& {
    return {value_.i64Type, fbthrift_type_, folly::to_underlying(Type::i64Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i64Type" } */
  template <typename..., typename T = ::apache::thrift::type_system::I64TypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> i64Type_ref() & {
    return {value_.i64Type, fbthrift_type_, folly::to_underlying(Type::i64Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i64Type" } */
  template <typename..., typename T = ::apache::thrift::type_system::I64TypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> i64Type_ref() && {
    return {std::move(value_.i64Type), fbthrift_type_, folly::to_underlying(Type::i64Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i64Type" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::type_system::I64TypeId&> i64Type() const& {
    return {value_.i64Type, fbthrift_type_, folly::to_underlying(Type::i64Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i64Type" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::I64TypeId&> i64Type() & {
    return {value_.i64Type, fbthrift_type_, folly::to_underlying(Type::i64Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "i64Type" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::I64TypeId&&> i64Type() && {
    return {std::move(value_.i64Type), fbthrift_type_, folly::to_underlying(Type::i64Type), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "floatType" } */
  template <typename..., typename T = ::apache::thrift::type_system::FloatTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> floatType_ref() const& {
    return {value_.floatType, fbthrift_type_, folly::to_underlying(Type::floatType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "floatType" } */
  template <typename..., typename T = ::apache::thrift::type_system::FloatTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> floatType_ref() & {
    return {value_.floatType, fbthrift_type_, folly::to_underlying(Type::floatType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "floatType" } */
  template <typename..., typename T = ::apache::thrift::type_system::FloatTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> floatType_ref() && {
    return {std::move(value_.floatType), fbthrift_type_, folly::to_underlying(Type::floatType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "floatType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::type_system::FloatTypeId&> floatType() const& {
    return {value_.floatType, fbthrift_type_, folly::to_underlying(Type::floatType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "floatType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::FloatTypeId&> floatType() & {
    return {value_.floatType, fbthrift_type_, folly::to_underlying(Type::floatType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "floatType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::FloatTypeId&&> floatType() && {
    return {std::move(value_.floatType), fbthrift_type_, folly::to_underlying(Type::floatType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "doubleType" } */
  template <typename..., typename T = ::apache::thrift::type_system::DoubleTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> doubleType_ref() const& {
    return {value_.doubleType, fbthrift_type_, folly::to_underlying(Type::doubleType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "doubleType" } */
  template <typename..., typename T = ::apache::thrift::type_system::DoubleTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> doubleType_ref() & {
    return {value_.doubleType, fbthrift_type_, folly::to_underlying(Type::doubleType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "doubleType" } */
  template <typename..., typename T = ::apache::thrift::type_system::DoubleTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> doubleType_ref() && {
    return {std::move(value_.doubleType), fbthrift_type_, folly::to_underlying(Type::doubleType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "doubleType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::type_system::DoubleTypeId&> doubleType() const& {
    return {value_.doubleType, fbthrift_type_, folly::to_underlying(Type::doubleType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "doubleType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::DoubleTypeId&> doubleType() & {
    return {value_.doubleType, fbthrift_type_, folly::to_underlying(Type::doubleType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "doubleType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::DoubleTypeId&&> doubleType() && {
    return {std::move(value_.doubleType), fbthrift_type_, folly::to_underlying(Type::doubleType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "stringType" } */
  template <typename..., typename T = ::apache::thrift::type_system::StringTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> stringType_ref() const& {
    return {value_.stringType, fbthrift_type_, folly::to_underlying(Type::stringType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "stringType" } */
  template <typename..., typename T = ::apache::thrift::type_system::StringTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> stringType_ref() & {
    return {value_.stringType, fbthrift_type_, folly::to_underlying(Type::stringType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "stringType" } */
  template <typename..., typename T = ::apache::thrift::type_system::StringTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> stringType_ref() && {
    return {std::move(value_.stringType), fbthrift_type_, folly::to_underlying(Type::stringType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "stringType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::type_system::StringTypeId&> stringType() const& {
    return {value_.stringType, fbthrift_type_, folly::to_underlying(Type::stringType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "stringType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::StringTypeId&> stringType() & {
    return {value_.stringType, fbthrift_type_, folly::to_underlying(Type::stringType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "stringType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::StringTypeId&&> stringType() && {
    return {std::move(value_.stringType), fbthrift_type_, folly::to_underlying(Type::stringType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "binaryType" } */
  template <typename..., typename T = ::apache::thrift::type_system::BinaryTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> binaryType_ref() const& {
    return {value_.binaryType, fbthrift_type_, folly::to_underlying(Type::binaryType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "binaryType" } */
  template <typename..., typename T = ::apache::thrift::type_system::BinaryTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> binaryType_ref() & {
    return {value_.binaryType, fbthrift_type_, folly::to_underlying(Type::binaryType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "binaryType" } */
  template <typename..., typename T = ::apache::thrift::type_system::BinaryTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> binaryType_ref() && {
    return {std::move(value_.binaryType), fbthrift_type_, folly::to_underlying(Type::binaryType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "binaryType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::type_system::BinaryTypeId&> binaryType() const& {
    return {value_.binaryType, fbthrift_type_, folly::to_underlying(Type::binaryType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "binaryType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::BinaryTypeId&> binaryType() & {
    return {value_.binaryType, fbthrift_type_, folly::to_underlying(Type::binaryType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "binaryType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::BinaryTypeId&&> binaryType() && {
    return {std::move(value_.binaryType), fbthrift_type_, folly::to_underlying(Type::binaryType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "anyType" } */
  template <typename..., typename T = ::apache::thrift::type_system::AnyTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> anyType_ref() const& {
    return {value_.anyType, fbthrift_type_, folly::to_underlying(Type::anyType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "anyType" } */
  template <typename..., typename T = ::apache::thrift::type_system::AnyTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> anyType_ref() & {
    return {value_.anyType, fbthrift_type_, folly::to_underlying(Type::anyType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "anyType" } */
  template <typename..., typename T = ::apache::thrift::type_system::AnyTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> anyType_ref() && {
    return {std::move(value_.anyType), fbthrift_type_, folly::to_underlying(Type::anyType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "anyType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::type_system::AnyTypeId&> anyType() const& {
    return {value_.anyType, fbthrift_type_, folly::to_underlying(Type::anyType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "anyType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::AnyTypeId&> anyType() & {
    return {value_.anyType, fbthrift_type_, folly::to_underlying(Type::anyType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "anyType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::AnyTypeId&&> anyType() && {
    return {std::move(value_.anyType), fbthrift_type_, folly::to_underlying(Type::anyType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "userDefinedType" } */
  template <typename..., typename T = ::apache::thrift::type_system::Uri>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> userDefinedType_ref() const& {
    return {value_.userDefinedType, fbthrift_type_, folly::to_underlying(Type::userDefinedType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "userDefinedType" } */
  template <typename..., typename T = ::apache::thrift::type_system::Uri>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> userDefinedType_ref() & {
    return {value_.userDefinedType, fbthrift_type_, folly::to_underlying(Type::userDefinedType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "userDefinedType" } */
  template <typename..., typename T = ::apache::thrift::type_system::Uri>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> userDefinedType_ref() && {
    return {std::move(value_.userDefinedType), fbthrift_type_, folly::to_underlying(Type::userDefinedType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "userDefinedType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::type_system::Uri&> userDefinedType() const& {
    return {value_.userDefinedType, fbthrift_type_, folly::to_underlying(Type::userDefinedType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "userDefinedType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::Uri&> userDefinedType() & {
    return {value_.userDefinedType, fbthrift_type_, folly::to_underlying(Type::userDefinedType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "userDefinedType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::Uri&&> userDefinedType() && {
    return {std::move(value_.userDefinedType), fbthrift_type_, folly::to_underlying(Type::userDefinedType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "listType" } */
  template <typename..., typename T = ::apache::thrift::type_system::ListTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> listType_ref() const& {
    return {value_.listType, fbthrift_type_, folly::to_underlying(Type::listType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "listType" } */
  template <typename..., typename T = ::apache::thrift::type_system::ListTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> listType_ref() & {
    return {value_.listType, fbthrift_type_, folly::to_underlying(Type::listType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "listType" } */
  template <typename..., typename T = ::apache::thrift::type_system::ListTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> listType_ref() && {
    return {std::move(value_.listType), fbthrift_type_, folly::to_underlying(Type::listType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "listType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::type_system::ListTypeId&> listType() const& {
    return {value_.listType, fbthrift_type_, folly::to_underlying(Type::listType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "listType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::ListTypeId&> listType() & {
    return {value_.listType, fbthrift_type_, folly::to_underlying(Type::listType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "listType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::ListTypeId&&> listType() && {
    return {std::move(value_.listType), fbthrift_type_, folly::to_underlying(Type::listType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "setType" } */
  template <typename..., typename T = ::apache::thrift::type_system::SetTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> setType_ref() const& {
    return {value_.setType, fbthrift_type_, folly::to_underlying(Type::setType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "setType" } */
  template <typename..., typename T = ::apache::thrift::type_system::SetTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> setType_ref() & {
    return {value_.setType, fbthrift_type_, folly::to_underlying(Type::setType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "setType" } */
  template <typename..., typename T = ::apache::thrift::type_system::SetTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> setType_ref() && {
    return {std::move(value_.setType), fbthrift_type_, folly::to_underlying(Type::setType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "setType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::type_system::SetTypeId&> setType() const& {
    return {value_.setType, fbthrift_type_, folly::to_underlying(Type::setType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "setType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::SetTypeId&> setType() & {
    return {value_.setType, fbthrift_type_, folly::to_underlying(Type::setType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "setType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::SetTypeId&&> setType() && {
    return {std::move(value_.setType), fbthrift_type_, folly::to_underlying(Type::setType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "mapType" } */
  template <typename..., typename T = ::apache::thrift::type_system::MapTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> mapType_ref() const& {
    return {value_.mapType, fbthrift_type_, folly::to_underlying(Type::mapType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "mapType" } */
  template <typename..., typename T = ::apache::thrift::type_system::MapTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> mapType_ref() & {
    return {value_.mapType, fbthrift_type_, folly::to_underlying(Type::mapType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "mapType" } */
  template <typename..., typename T = ::apache::thrift::type_system::MapTypeId>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> mapType_ref() && {
    return {std::move(value_.mapType), fbthrift_type_, folly::to_underlying(Type::mapType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "mapType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::type_system::MapTypeId&> mapType() const& {
    return {value_.mapType, fbthrift_type_, folly::to_underlying(Type::mapType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "mapType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::MapTypeId&> mapType() & {
    return {value_.mapType, fbthrift_type_, folly::to_underlying(Type::mapType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "mapType" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::type_system::MapTypeId&&> mapType() && {
    return {std::move(value_.mapType), fbthrift_type_, folly::to_underlying(Type::mapType), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  Type getType() const { return static_cast<Type>(fbthrift_type_); }

  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;
 protected:
  storage_type value_;
  std::underlying_type_t<Type> fbthrift_type_;

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

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

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


} // namespace apache::thrift::type_system

namespace apache::thrift {

template <> struct TEnumDataStorage<::apache::thrift::type_system::TypeIdUnion::Type>;

template <> struct TEnumTraits<::apache::thrift::type_system::TypeIdUnion::Type> {
  using type = ::apache::thrift::type_system::TypeIdUnion::Type;

  static constexpr std::size_t const size = 14;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }

  static constexpr type min() { return type::boolType; }
  static constexpr type max() { return type::mapType; }
};
} // namespace apache::thrift

namespace apache::thrift::detail {
template <> struct TSchemaAssociation<::apache::thrift::type_system::ListTypeIdStruct, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 1615716143984866960;
  static constexpr ::std::string_view definitionKey = {"\xa6\xb9\x2d\x3b\x21\xa4\x32\x22\xc6\x0e\x6a\xd2\x9d\x08\x9a\x2e", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::type_system::SetTypeIdStruct, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 1615716143984866960;
  static constexpr ::std::string_view definitionKey = {"\x8f\xe1\xb3\x95\x7e\x44\x09\x87\xcf\xab\xc5\xa7\xd6\xa1\x50\xb9", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::type_system::MapTypeIdStruct, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 1615716143984866960;
  static constexpr ::std::string_view definitionKey = {"\xe1\xb6\xb0\x89\xfa\x1d\x89\x1d\x57\x1b\xb7\x46\xec\xcd\xe8\xf3", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::type_system::BoolTypeIdStruct, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 1615716143984866960;
  static constexpr ::std::string_view definitionKey = {"\xb1\x35\x0d\xb7\x7f\x6f\xfb\x25\xcc\x9f\x05\x56\x7c\xdb\xe0\x0b", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::type_system::ByteTypeIdStruct, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 1615716143984866960;
  static constexpr ::std::string_view definitionKey = {"\xc8\x45\xe0\xbf\xab\x66\x98\x13\x44\xca\xc3\x91\x13\xd8\x1c\x61", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::type_system::I16TypeIdStruct, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 1615716143984866960;
  static constexpr ::std::string_view definitionKey = {"\x64\xd7\x66\x65\xa4\xa5\x23\xa1\xe6\x1e\xf3\xb1\x78\xef\x0a\xf9", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::type_system::I32TypeIdStruct, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 1615716143984866960;
  static constexpr ::std::string_view definitionKey = {"\x87\x95\x52\x64\x4b\x09\x28\x41\xc0\x37\xc9\x20\x27\xd9\x92\x58", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::type_system::I64TypeIdStruct, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 1615716143984866960;
  static constexpr ::std::string_view definitionKey = {"\xba\x0c\x6f\x1a\x0e\xad\x2c\x8f\x03\x4a\x43\xbb\x89\x98\x5d\xda", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::type_system::FloatTypeIdStruct, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 1615716143984866960;
  static constexpr ::std::string_view definitionKey = {"\x1e\xad\x0e\xf3\x60\x28\x0b\x92\x85\xb4\xe2\xa3\x74\x5a\x8e\x67", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::type_system::DoubleTypeIdStruct, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 1615716143984866960;
  static constexpr ::std::string_view definitionKey = {"\x67\xa3\xbe\xe4\x89\x6b\x1a\x43\xec\xb7\xf8\xe7\xf8\xd2\x4e\x32", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::type_system::StringTypeIdStruct, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 1615716143984866960;
  static constexpr ::std::string_view definitionKey = {"\x30\x1c\x58\x65\x72\xb4\x33\xa3\x7e\x13\xb7\x1c\xdf\x24\x53\x14", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::type_system::BinaryTypeIdStruct, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 1615716143984866960;
  static constexpr ::std::string_view definitionKey = {"\x19\x5b\xbd\x6c\x52\xe7\x63\x25\x42\x2c\x83\x1e\xa1\xca\xb7\x22", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::type_system::AnyTypeIdStruct, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 1615716143984866960;
  static constexpr ::std::string_view definitionKey = {"\xe2\x27\x20\xc3\x72\x29\x6c\xce\xae\xb7\xbe\x8d\xf4\x77\x3b\xae", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::type_system::TypeIdUnion, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 1615716143984866960;
  static constexpr ::std::string_view definitionKey = {"\x3d\x31\xb1\xb8\xae\x4c\xd0\x6f\xc2\x65\xaf\xd1\xbb\x76\x26\xa8", 16};
};
} // namespace apache::thrift::detail
