/**
 * Autogenerated by Thrift for /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fbthrift/fbthrift/work/fbthrift-2024.08.26.00/thrift/annotation/java.thrift
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated @nocommit
 */
#pragma once

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



namespace apache {
namespace thrift {
namespace ident {
struct java_annotation;
struct adapterClassName;
struct typeClassName;
struct wrapperClassName;
struct typeClassName;
} // namespace ident
namespace detail {
#ifndef APACHE_THRIFT_ACCESSOR_java_annotation
#define APACHE_THRIFT_ACCESSOR_java_annotation
APACHE_THRIFT_DEFINE_ACCESSOR(java_annotation);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_adapterClassName
#define APACHE_THRIFT_ACCESSOR_adapterClassName
APACHE_THRIFT_DEFINE_ACCESSOR(adapterClassName);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_typeClassName
#define APACHE_THRIFT_ACCESSOR_typeClassName
APACHE_THRIFT_DEFINE_ACCESSOR(typeClassName);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_wrapperClassName
#define APACHE_THRIFT_ACCESSOR_wrapperClassName
APACHE_THRIFT_DEFINE_ACCESSOR(wrapperClassName);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_typeClassName
#define APACHE_THRIFT_ACCESSOR_typeClassName
APACHE_THRIFT_DEFINE_ACCESSOR(typeClassName);
#endif
} // namespace detail
} // namespace thrift
} // namespace apache

// BEGIN declare_enums

// END declare_enums
// BEGIN forward_declare
namespace facebook::thrift::annotation::java {
class Mutable;
class Annotation;
class BinaryString;
class Adapter;
class Wrapper;
class Recursive;
class FieldUseUnmangledName;
class UseIntrinsicDefault;
} // namespace facebook::thrift::annotation::java
// END forward_declare
namespace apache::thrift::detail::annotation {
} // namespace apache::thrift::detail::annotation

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

// BEGIN hash_and_equal_to
// END hash_and_equal_to
namespace facebook::thrift::annotation::java {
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/_opt_bblocal_var_buildworker_ports_build_ports_devel_fbthrift/fbthrift/work/fbthrift-2024.08.26.00/thrift/annotation/java.thrift", "name": "Mutable", "kind": "struct" } */
class Mutable 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 const char* __fbthrift_thrift_uri();
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  using __fbthrift_reflection_ident_list = folly::tag_t<
  >;

  static constexpr std::int16_t __fbthrift_reflection_field_id_list[] = {0};
  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;

  static constexpr std::size_t __fbthrift_field_size_v = 0;

  template<class T>
  using __fbthrift_id = ::apache::thrift::type::field_id<__fbthrift_reflection_field_id_list[folly::to_underlying(T::value)]>;

  template<class T>
  using __fbthrift_type_tag = ::apache::thrift::detail::at<__fbthrift_reflection_type_tags, T::value>;

  template<class T>
  using __fbthrift_ident = ::apache::thrift::detail::at<__fbthrift_reflection_ident_list, T::value>;

  template<class T> using __fbthrift_ordinal = ::apache::thrift::type::ordinal_tag<
    ::apache::thrift::detail::getFieldOrdinal<T,
                                              __fbthrift_reflection_ident_list,
                                              __fbthrift_reflection_type_tags>(
      __fbthrift_reflection_field_id_list
    )
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = Mutable;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

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

  Mutable(Mutable&&) = default;

  Mutable(const Mutable&) = default;


  Mutable& operator=(Mutable&&) = default;

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

 public:

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

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


/** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fbthrift/fbthrift/work/fbthrift-2024.08.26.00/thrift/annotation/java.thrift", "name": "Annotation", "kind": "struct" } */
class Annotation 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 const char* __fbthrift_thrift_uri();
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  using __fbthrift_reflection_ident_list = folly::tag_t<
    ::apache::thrift::ident::java_annotation
  >;

  static constexpr std::int16_t __fbthrift_reflection_field_id_list[] = {0,1};
  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t
  >;

  static constexpr std::size_t __fbthrift_field_size_v = 1;

  template<class T>
  using __fbthrift_id = ::apache::thrift::type::field_id<__fbthrift_reflection_field_id_list[folly::to_underlying(T::value)]>;

  template<class T>
  using __fbthrift_type_tag = ::apache::thrift::detail::at<__fbthrift_reflection_type_tags, T::value>;

  template<class T>
  using __fbthrift_ident = ::apache::thrift::detail::at<__fbthrift_reflection_ident_list, T::value>;

  template<class T> using __fbthrift_ordinal = ::apache::thrift::type::ordinal_tag<
    ::apache::thrift::detail::getFieldOrdinal<T,
                                              __fbthrift_reflection_ident_list,
                                              __fbthrift_reflection_type_tags>(
      __fbthrift_reflection_field_id_list
    )
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = Annotation;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  Annotation();

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

  Annotation(Annotation&&) noexcept;

  Annotation(const Annotation& src);


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

  ~Annotation();

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

 public:

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

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

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

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

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

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

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

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

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

  /** Glean { "field": "java_annotation" } */
  const ::std::string& get_java_annotation() const& {
    return __fbthrift_field_java_annotation;
  }

  /** Glean { "field": "java_annotation" } */
  ::std::string get_java_annotation() && {
    return std::move(__fbthrift_field_java_annotation);
  }

  /** Glean { "field": "java_annotation" } */
  template <typename T_Annotation_java_annotation_struct_setter = ::std::string>
  [[deprecated("Use `FOO.java_annotation() = BAR;` instead of `FOO.set_java_annotation(BAR);`")]]
  ::std::string& set_java_annotation(T_Annotation_java_annotation_struct_setter&& java_annotation_) {
    java_annotation_ref() = std::forward<T_Annotation_java_annotation_struct_setter>(java_annotation_);
    return __fbthrift_field_java_annotation;
  }

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

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


/** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fbthrift/fbthrift/work/fbthrift-2024.08.26.00/thrift/annotation/java.thrift", "name": "BinaryString", "kind": "struct" } */
class BinaryString 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 const char* __fbthrift_thrift_uri();
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  using __fbthrift_reflection_ident_list = folly::tag_t<
  >;

  static constexpr std::int16_t __fbthrift_reflection_field_id_list[] = {0};
  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;

  static constexpr std::size_t __fbthrift_field_size_v = 0;

  template<class T>
  using __fbthrift_id = ::apache::thrift::type::field_id<__fbthrift_reflection_field_id_list[folly::to_underlying(T::value)]>;

  template<class T>
  using __fbthrift_type_tag = ::apache::thrift::detail::at<__fbthrift_reflection_type_tags, T::value>;

  template<class T>
  using __fbthrift_ident = ::apache::thrift::detail::at<__fbthrift_reflection_ident_list, T::value>;

  template<class T> using __fbthrift_ordinal = ::apache::thrift::type::ordinal_tag<
    ::apache::thrift::detail::getFieldOrdinal<T,
                                              __fbthrift_reflection_ident_list,
                                              __fbthrift_reflection_type_tags>(
      __fbthrift_reflection_field_id_list
    )
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = BinaryString;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

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

  BinaryString(BinaryString&&) = default;

  BinaryString(const BinaryString&) = default;


  BinaryString& operator=(BinaryString&&) = default;

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

 public:

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

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


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

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static const char* __fbthrift_thrift_uri();
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  using __fbthrift_reflection_ident_list = folly::tag_t<
    ::apache::thrift::ident::adapterClassName,
    ::apache::thrift::ident::typeClassName
  >;

  static constexpr std::int16_t __fbthrift_reflection_field_id_list[] = {0,1,2};
  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::string_t
  >;

  static constexpr std::size_t __fbthrift_field_size_v = 2;

  template<class T>
  using __fbthrift_id = ::apache::thrift::type::field_id<__fbthrift_reflection_field_id_list[folly::to_underlying(T::value)]>;

  template<class T>
  using __fbthrift_type_tag = ::apache::thrift::detail::at<__fbthrift_reflection_type_tags, T::value>;

  template<class T>
  using __fbthrift_ident = ::apache::thrift::detail::at<__fbthrift_reflection_ident_list, T::value>;

  template<class T> using __fbthrift_ordinal = ::apache::thrift::type::ordinal_tag<
    ::apache::thrift::detail::getFieldOrdinal<T,
                                              __fbthrift_reflection_ident_list,
                                              __fbthrift_reflection_type_tags>(
      __fbthrift_reflection_field_id_list
    )
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

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


 public:

  Adapter();

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

  Adapter(Adapter&&) noexcept;

  Adapter(const Adapter& src);


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

  ~Adapter();

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

 public:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  /** Glean { "field": "adapterClassName" } */
  const ::std::string& get_adapterClassName() const& {
    return __fbthrift_field_adapterClassName;
  }

  /** Glean { "field": "adapterClassName" } */
  ::std::string get_adapterClassName() && {
    return std::move(__fbthrift_field_adapterClassName);
  }

  /** Glean { "field": "adapterClassName" } */
  template <typename T_Adapter_adapterClassName_struct_setter = ::std::string>
  [[deprecated("Use `FOO.adapterClassName() = BAR;` instead of `FOO.set_adapterClassName(BAR);`")]]
  ::std::string& set_adapterClassName(T_Adapter_adapterClassName_struct_setter&& adapterClassName_) {
    adapterClassName_ref() = std::forward<T_Adapter_adapterClassName_struct_setter>(adapterClassName_);
    return __fbthrift_field_adapterClassName;
  }

  /** Glean { "field": "typeClassName" } */
  const ::std::string& get_typeClassName() const& {
    return __fbthrift_field_typeClassName;
  }

  /** Glean { "field": "typeClassName" } */
  ::std::string get_typeClassName() && {
    return std::move(__fbthrift_field_typeClassName);
  }

  /** Glean { "field": "typeClassName" } */
  template <typename T_Adapter_typeClassName_struct_setter = ::std::string>
  [[deprecated("Use `FOO.typeClassName() = BAR;` instead of `FOO.set_typeClassName(BAR);`")]]
  ::std::string& set_typeClassName(T_Adapter_typeClassName_struct_setter&& typeClassName_) {
    typeClassName_ref() = std::forward<T_Adapter_typeClassName_struct_setter>(typeClassName_);
    return __fbthrift_field_typeClassName;
  }

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

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

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

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


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

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static const char* __fbthrift_thrift_uri();
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  using __fbthrift_reflection_ident_list = folly::tag_t<
    ::apache::thrift::ident::wrapperClassName,
    ::apache::thrift::ident::typeClassName
  >;

  static constexpr std::int16_t __fbthrift_reflection_field_id_list[] = {0,1,2};
  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::string_t
  >;

  static constexpr std::size_t __fbthrift_field_size_v = 2;

  template<class T>
  using __fbthrift_id = ::apache::thrift::type::field_id<__fbthrift_reflection_field_id_list[folly::to_underlying(T::value)]>;

  template<class T>
  using __fbthrift_type_tag = ::apache::thrift::detail::at<__fbthrift_reflection_type_tags, T::value>;

  template<class T>
  using __fbthrift_ident = ::apache::thrift::detail::at<__fbthrift_reflection_ident_list, T::value>;

  template<class T> using __fbthrift_ordinal = ::apache::thrift::type::ordinal_tag<
    ::apache::thrift::detail::getFieldOrdinal<T,
                                              __fbthrift_reflection_ident_list,
                                              __fbthrift_reflection_type_tags>(
      __fbthrift_reflection_field_id_list
    )
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

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


 public:

  Wrapper();

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

  Wrapper(Wrapper&&) noexcept;

  Wrapper(const Wrapper& src);


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

  ~Wrapper();

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

 public:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  /** Glean { "field": "wrapperClassName" } */
  const ::std::string& get_wrapperClassName() const& {
    return __fbthrift_field_wrapperClassName;
  }

  /** Glean { "field": "wrapperClassName" } */
  ::std::string get_wrapperClassName() && {
    return std::move(__fbthrift_field_wrapperClassName);
  }

  /** Glean { "field": "wrapperClassName" } */
  template <typename T_Wrapper_wrapperClassName_struct_setter = ::std::string>
  [[deprecated("Use `FOO.wrapperClassName() = BAR;` instead of `FOO.set_wrapperClassName(BAR);`")]]
  ::std::string& set_wrapperClassName(T_Wrapper_wrapperClassName_struct_setter&& wrapperClassName_) {
    wrapperClassName_ref() = std::forward<T_Wrapper_wrapperClassName_struct_setter>(wrapperClassName_);
    return __fbthrift_field_wrapperClassName;
  }

  /** Glean { "field": "typeClassName" } */
  const ::std::string& get_typeClassName() const& {
    return __fbthrift_field_typeClassName;
  }

  /** Glean { "field": "typeClassName" } */
  ::std::string get_typeClassName() && {
    return std::move(__fbthrift_field_typeClassName);
  }

  /** Glean { "field": "typeClassName" } */
  template <typename T_Wrapper_typeClassName_struct_setter = ::std::string>
  [[deprecated("Use `FOO.typeClassName() = BAR;` instead of `FOO.set_typeClassName(BAR);`")]]
  ::std::string& set_typeClassName(T_Wrapper_typeClassName_struct_setter&& typeClassName_) {
    typeClassName_ref() = std::forward<T_Wrapper_typeClassName_struct_setter>(typeClassName_);
    return __fbthrift_field_typeClassName;
  }

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

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

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

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


/** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fbthrift/fbthrift/work/fbthrift-2024.08.26.00/thrift/annotation/java.thrift", "name": "Recursive", "kind": "struct" } */
class Recursive 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 const char* __fbthrift_thrift_uri();
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  using __fbthrift_reflection_ident_list = folly::tag_t<
  >;

  static constexpr std::int16_t __fbthrift_reflection_field_id_list[] = {0};
  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;

  static constexpr std::size_t __fbthrift_field_size_v = 0;

  template<class T>
  using __fbthrift_id = ::apache::thrift::type::field_id<__fbthrift_reflection_field_id_list[folly::to_underlying(T::value)]>;

  template<class T>
  using __fbthrift_type_tag = ::apache::thrift::detail::at<__fbthrift_reflection_type_tags, T::value>;

  template<class T>
  using __fbthrift_ident = ::apache::thrift::detail::at<__fbthrift_reflection_ident_list, T::value>;

  template<class T> using __fbthrift_ordinal = ::apache::thrift::type::ordinal_tag<
    ::apache::thrift::detail::getFieldOrdinal<T,
                                              __fbthrift_reflection_ident_list,
                                              __fbthrift_reflection_type_tags>(
      __fbthrift_reflection_field_id_list
    )
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = Recursive;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

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

  Recursive(Recursive&&) = default;

  Recursive(const Recursive&) = default;


  Recursive& operator=(Recursive&&) = default;

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

 public:

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

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


/** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fbthrift/fbthrift/work/fbthrift-2024.08.26.00/thrift/annotation/java.thrift", "name": "FieldUseUnmangledName", "kind": "struct" } */
class FieldUseUnmangledName 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 const char* __fbthrift_thrift_uri();
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  using __fbthrift_reflection_ident_list = folly::tag_t<
  >;

  static constexpr std::int16_t __fbthrift_reflection_field_id_list[] = {0};
  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;

  static constexpr std::size_t __fbthrift_field_size_v = 0;

  template<class T>
  using __fbthrift_id = ::apache::thrift::type::field_id<__fbthrift_reflection_field_id_list[folly::to_underlying(T::value)]>;

  template<class T>
  using __fbthrift_type_tag = ::apache::thrift::detail::at<__fbthrift_reflection_type_tags, T::value>;

  template<class T>
  using __fbthrift_ident = ::apache::thrift::detail::at<__fbthrift_reflection_ident_list, T::value>;

  template<class T> using __fbthrift_ordinal = ::apache::thrift::type::ordinal_tag<
    ::apache::thrift::detail::getFieldOrdinal<T,
                                              __fbthrift_reflection_ident_list,
                                              __fbthrift_reflection_type_tags>(
      __fbthrift_reflection_field_id_list
    )
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = FieldUseUnmangledName;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

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

  FieldUseUnmangledName(FieldUseUnmangledName&&) = default;

  FieldUseUnmangledName(const FieldUseUnmangledName&) = default;


  FieldUseUnmangledName& operator=(FieldUseUnmangledName&&) = default;

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

 public:

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

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


/** Glean {"file": "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fbthrift/fbthrift/work/fbthrift-2024.08.26.00/thrift/annotation/java.thrift", "name": "UseIntrinsicDefault", "kind": "struct" } */
class UseIntrinsicDefault 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 const char* __fbthrift_thrift_uri();
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  using __fbthrift_reflection_ident_list = folly::tag_t<
  >;

  static constexpr std::int16_t __fbthrift_reflection_field_id_list[] = {0};
  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;

  static constexpr std::size_t __fbthrift_field_size_v = 0;

  template<class T>
  using __fbthrift_id = ::apache::thrift::type::field_id<__fbthrift_reflection_field_id_list[folly::to_underlying(T::value)]>;

  template<class T>
  using __fbthrift_type_tag = ::apache::thrift::detail::at<__fbthrift_reflection_type_tags, T::value>;

  template<class T>
  using __fbthrift_ident = ::apache::thrift::detail::at<__fbthrift_reflection_ident_list, T::value>;

  template<class T> using __fbthrift_ordinal = ::apache::thrift::type::ordinal_tag<
    ::apache::thrift::detail::getFieldOrdinal<T,
                                              __fbthrift_reflection_ident_list,
                                              __fbthrift_reflection_type_tags>(
      __fbthrift_reflection_field_id_list
    )
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = UseIntrinsicDefault;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

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

  UseIntrinsicDefault(UseIntrinsicDefault&&) = default;

  UseIntrinsicDefault(const UseIntrinsicDefault&) = default;


  UseIntrinsicDefault& operator=(UseIntrinsicDefault&&) = default;

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

 public:

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

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


} // namespace facebook::thrift::annotation::java
