/**
 * Autogenerated by Thrift for src/module.thrift
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
#pragma once

#include  "thrift/compiler/test/fixtures/types/gen-cpp2/include_fatal_types.h"

#include "thrift/compiler/test/fixtures/types/gen-cpp2/module_types.h"

#include "thrift/compiler/test/fixtures/types/gen-cpp2/module_fatal.h"

#include <fatal/type/traits.h>
#include <fatal/type/list.h>

namespace apache { namespace thrift { namespace fixtures { namespace types {

namespace __fbthrift_refl {
namespace __fbthrift_refl_impl = ::apache::thrift::detail::reflection_impl;

class decorated_struct_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using field = __fbthrift_refl_impl::reflected_no_annotations;
    };

    struct __fbthrift_keys {
      using cpp_declare_equal_to = __fbthrift_strings_module::cpp_declare_equal_to;
      using cpp_declare_hash = __fbthrift_strings_module::cpp_declare_hash;
    };

    struct __fbthrift_values {
      using cpp_declare_equal_to = ::fatal::sequence<char, '1'>;
      using cpp_declare_hash = ::fatal::sequence<char, '1'>;
    };

   public:
    using keys = __fbthrift_keys;
    using values = __fbthrift_values;
    using map = ::fatal::list<
        ::apache::thrift::annotation<keys::cpp_declare_equal_to, values::cpp_declare_equal_to>,
        ::apache::thrift::annotation<keys::cpp_declare_hash, values::cpp_declare_hash>
    >;
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_field {
    using owner = ::apache::thrift::fixtures::types::decorated_struct;
    using name = __fbthrift_strings_module::__fbthrift_hash_c0d2856b74d0df05b9d4456b177950351bd88e98b77f12574dfb7a911acee0d0;
    using type = ::std::string;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::field>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::field>;
    using type_class = ::apache::thrift::type_class::string;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::field>;
  };

  struct __fbthrift_member {
    using field = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_field>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::decorated_struct;
  using name = __fbthrift_strings_module::decorated_struct;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::field
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(2133116297910176940ull)
  >;
};

class ContainerStruct_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using fieldA = __fbthrift_refl_impl::reflected_no_annotations;
      using fieldB = __fbthrift_refl_impl::reflected_no_annotations;
      using fieldC = __fbthrift_refl_impl::reflected_no_annotations;
      using fieldD = __fbthrift_refl_impl::reflected_no_annotations;
      using fieldE = __fbthrift_refl_impl::reflected_no_annotations;
      using fieldF = __fbthrift_refl_impl::reflected_no_annotations;
      using fieldG = __fbthrift_refl_impl::reflected_no_annotations;
      using fieldH = __fbthrift_refl_impl::reflected_no_annotations;
    };

   public:
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_fieldA {
    using owner = ::apache::thrift::fixtures::types::ContainerStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_a003c1938a10c7729197e235918bdad7bc795ec24b19f24c66e4f24374526ad8;
    using type = ::std::vector<::std::int32_t>;
    static constexpr ::apache::thrift::field_id_t id = 12;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::fieldA>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::fieldA>;
    using type_class = ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::fieldA>;
  };
  struct __fbthrift_member_fieldB {
    using owner = ::apache::thrift::fixtures::types::ContainerStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_c7e10d053d5c1a0a0743c1dfc0a38c439cd181cc30829f18cc684e286d0baf27;
    using type = std::list<::std::int32_t>;
    static constexpr ::apache::thrift::field_id_t id = 2;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::fieldB>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::fieldB>;
    using type_class = ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::fieldB>;
  };
  struct __fbthrift_member_fieldC {
    using owner = ::apache::thrift::fixtures::types::ContainerStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_7a60aa9f6a5416b61206a441ce84695a835326c0edc0c9b86b92b618f29eb9ed;
    using type = std::deque<::std::int32_t>;
    static constexpr ::apache::thrift::field_id_t id = 3;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::fieldC>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::fieldC>;
    using type_class = ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::fieldC>;
  };
  struct __fbthrift_member_fieldD {
    using owner = ::apache::thrift::fixtures::types::ContainerStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_a73c4974ccb5981437f75c22da908dd553c1389729210c7d554a65e1b0f4045a;
    using type = folly::fbvector<::std::int32_t>;
    static constexpr ::apache::thrift::field_id_t id = 4;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::fieldD>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::fieldD>;
    using type_class = ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::fieldD>;
  };
  struct __fbthrift_member_fieldE {
    using owner = ::apache::thrift::fixtures::types::ContainerStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_ba2a88de7258832d40bb04e70c8d37d66141754f3561ecfa366dc9496c9a7704;
    using type = folly::small_vector<::std::int32_t>;
    static constexpr ::apache::thrift::field_id_t id = 5;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::fieldE>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::fieldE>;
    using type_class = ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::fieldE>;
  };
  struct __fbthrift_member_fieldF {
    using owner = ::apache::thrift::fixtures::types::ContainerStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_68f4d40289380c5c6536b552d834e0a1e0df88fddcd39d4a6d7f3a0b1cf22012;
    using type = folly::sorted_vector_set<::std::int32_t>;
    static constexpr ::apache::thrift::field_id_t id = 6;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::fieldF>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::fieldF>;
    using type_class = ::apache::thrift::type_class::set<::apache::thrift::type_class::integral>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::fieldF>;
  };
  struct __fbthrift_member_fieldG {
    using owner = ::apache::thrift::fixtures::types::ContainerStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_4c4f1be7384da0ab8e9483a59b7018f4671e228da38fa30ee8eabe777bc24cda;
    using type = folly::sorted_vector_map<::std::int32_t, ::std::string>;
    static constexpr ::apache::thrift::field_id_t id = 7;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::fieldG>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::fieldG>;
    using type_class = ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::fieldG>;
  };
  struct __fbthrift_member_fieldH {
    using owner = ::apache::thrift::fixtures::types::ContainerStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_8841d05aac4c5bad0b39a0f488a8cb61c0d273515073afde4b80ba3b758e687c;
    using type = ::apache::thrift::fixtures::types::SomeMap;
    static constexpr ::apache::thrift::field_id_t id = 8;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::fieldH>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::fieldH>;
    using type_class = ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::fieldH>;
  };

  struct __fbthrift_member {
    using fieldA = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_fieldA>;
    using fieldB = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_fieldB>;
    using fieldC = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_fieldC>;
    using fieldD = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_fieldD>;
    using fieldE = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_fieldE>;
    using fieldF = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_fieldF>;
    using fieldG = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_fieldG>;
    using fieldH = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_fieldH>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::ContainerStruct;
  using name = __fbthrift_strings_module::ContainerStruct;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::fieldA,
      member::fieldB,
      member::fieldC,
      member::fieldD,
      member::fieldE,
      member::fieldF,
      member::fieldG,
      member::fieldH
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(11962737781608441260ull)
  >;
};

class CppTypeStruct_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using fieldA = __fbthrift_refl_impl::reflected_no_annotations;
    };

   public:
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_fieldA {
    using owner = ::apache::thrift::fixtures::types::CppTypeStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_a003c1938a10c7729197e235918bdad7bc795ec24b19f24c66e4f24374526ad8;
    using type = std::list<int32_t>;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::fieldA>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::fieldA>;
    using type_class = ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::fieldA>;
  };

  struct __fbthrift_member {
    using fieldA = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_fieldA>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::CppTypeStruct;
  using name = __fbthrift_strings_module::CppTypeStruct;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::fieldA
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(15199837033647160364ull)
  >;
};

class VirtualStruct_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using MyIntField = __fbthrift_refl_impl::reflected_no_annotations;
    };

    struct __fbthrift_keys {
      using cpp_virtual = __fbthrift_strings_module::cpp_virtual;
    };

    struct __fbthrift_values {
      using cpp_virtual = ::fatal::sequence<char, '1'>;
    };

   public:
    using keys = __fbthrift_keys;
    using values = __fbthrift_values;
    using map = ::fatal::list<
        ::apache::thrift::annotation<keys::cpp_virtual, values::cpp_virtual>
    >;
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_MyIntField {
    using owner = ::apache::thrift::fixtures::types::VirtualStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_efda3b7db6b44fe655cfcf36ce339c894e64337d7f192d6ad81a95d5c98a2359;
    using type = ::std::int64_t;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::MyIntField>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::MyIntField>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::MyIntField>;
  };

  struct __fbthrift_member {
    using MyIntField = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_MyIntField>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::VirtualStruct;
  using name = __fbthrift_strings_module::VirtualStruct;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::MyIntField
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(6433147857901895308ull)
  >;
};

class MyStructWithForwardRefEnum_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using a = __fbthrift_refl_impl::reflected_no_annotations;
      using b = __fbthrift_refl_impl::reflected_no_annotations;
    };

   public:
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_a {
    using owner = ::apache::thrift::fixtures::types::MyStructWithForwardRefEnum;
    using name = __fbthrift_strings_module::__fbthrift_hash_ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb;
    using type = ::apache::thrift::fixtures::types::MyForwardRefEnum;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::a>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::a>;
    using type_class = ::apache::thrift::type_class::enumeration;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::a>;
  };
  struct __fbthrift_member_b {
    using owner = ::apache::thrift::fixtures::types::MyStructWithForwardRefEnum;
    using name = __fbthrift_strings_module::__fbthrift_hash_3e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d;
    using type = ::apache::thrift::fixtures::types::MyForwardRefEnum;
    static constexpr ::apache::thrift::field_id_t id = 2;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::b>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::b>;
    using type_class = ::apache::thrift::type_class::enumeration;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::b>;
  };

  struct __fbthrift_member {
    using a = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_a>;
    using b = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_b>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::MyStructWithForwardRefEnum;
  using name = __fbthrift_strings_module::MyStructWithForwardRefEnum;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::a,
      member::b
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(4311102400659715084ull)
  >;
};

class TrivialNumeric_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using a = __fbthrift_refl_impl::reflected_no_annotations;
      using b = __fbthrift_refl_impl::reflected_no_annotations;
    };

   public:
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_a {
    using owner = ::apache::thrift::fixtures::types::TrivialNumeric;
    using name = __fbthrift_strings_module::__fbthrift_hash_ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb;
    using type = ::std::int32_t;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::a>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::a>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::a>;
  };
  struct __fbthrift_member_b {
    using owner = ::apache::thrift::fixtures::types::TrivialNumeric;
    using name = __fbthrift_strings_module::__fbthrift_hash_3e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d;
    using type = bool;
    static constexpr ::apache::thrift::field_id_t id = 2;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::b>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::b>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::b>;
  };

  struct __fbthrift_member {
    using a = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_a>;
    using b = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_b>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::TrivialNumeric;
  using name = __fbthrift_strings_module::TrivialNumeric;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::a,
      member::b
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(15631381314040922508ull)
  >;
};

class TrivialNestedWithDefault_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using z = __fbthrift_refl_impl::reflected_no_annotations;
      using n = __fbthrift_refl_impl::reflected_no_annotations;
    };

   public:
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_z {
    using owner = ::apache::thrift::fixtures::types::TrivialNestedWithDefault;
    using name = __fbthrift_strings_module::__fbthrift_hash_594e519ae499312b29433b7dd8a97ff068defcba9755b6d5d00e84c524d67b06;
    using type = ::std::int32_t;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::z>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::z>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::z>;
  };
  struct __fbthrift_member_n {
    using owner = ::apache::thrift::fixtures::types::TrivialNestedWithDefault;
    using name = __fbthrift_strings_module::__fbthrift_hash_1b16b1df538ba12dc3f97edbb85caa7050d46c148134290feba80f8236c83db9;
    using type = ::apache::thrift::fixtures::types::TrivialNumeric;
    static constexpr ::apache::thrift::field_id_t id = 2;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::n>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::n>;
    using type_class = ::apache::thrift::type_class::structure;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::n>;
  };

  struct __fbthrift_member {
    using z = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_z>;
    using n = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_n>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::TrivialNestedWithDefault;
  using name = __fbthrift_strings_module::TrivialNestedWithDefault;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::z,
      member::n
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(6528453523498201964ull)
  >;
};

class ComplexString_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using a = __fbthrift_refl_impl::reflected_no_annotations;
      using b = __fbthrift_refl_impl::reflected_no_annotations;
    };

   public:
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_a {
    using owner = ::apache::thrift::fixtures::types::ComplexString;
    using name = __fbthrift_strings_module::__fbthrift_hash_ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb;
    using type = ::std::string;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::a>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::a>;
    using type_class = ::apache::thrift::type_class::string;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::a>;
  };
  struct __fbthrift_member_b {
    using owner = ::apache::thrift::fixtures::types::ComplexString;
    using name = __fbthrift_strings_module::__fbthrift_hash_3e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d;
    using type = ::std::map<::std::string, ::std::int32_t>;
    static constexpr ::apache::thrift::field_id_t id = 2;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::b>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::b>;
    using type_class = ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::b>;
  };

  struct __fbthrift_member {
    using a = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_a>;
    using b = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_b>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::ComplexString;
  using name = __fbthrift_strings_module::ComplexString;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::a,
      member::b
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(15088647206859143756ull)
  >;
};

class ComplexNestedWithDefault_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using z = __fbthrift_refl_impl::reflected_no_annotations;
      using n = __fbthrift_refl_impl::reflected_no_annotations;
    };

   public:
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_z {
    using owner = ::apache::thrift::fixtures::types::ComplexNestedWithDefault;
    using name = __fbthrift_strings_module::__fbthrift_hash_594e519ae499312b29433b7dd8a97ff068defcba9755b6d5d00e84c524d67b06;
    using type = ::std::string;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::z>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::z>;
    using type_class = ::apache::thrift::type_class::string;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::z>;
  };
  struct __fbthrift_member_n {
    using owner = ::apache::thrift::fixtures::types::ComplexNestedWithDefault;
    using name = __fbthrift_strings_module::__fbthrift_hash_1b16b1df538ba12dc3f97edbb85caa7050d46c148134290feba80f8236c83db9;
    using type = ::apache::thrift::fixtures::types::ComplexString;
    static constexpr ::apache::thrift::field_id_t id = 2;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::n>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::n>;
    using type_class = ::apache::thrift::type_class::structure;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::n>;
  };

  struct __fbthrift_member {
    using z = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_z>;
    using n = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_n>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::ComplexNestedWithDefault;
  using name = __fbthrift_strings_module::ComplexNestedWithDefault;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::z,
      member::n
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(2062586248581855212ull)
  >;
};

class MinPadding_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using small = __fbthrift_refl_impl::reflected_no_annotations;
      using big = __fbthrift_refl_impl::reflected_no_annotations;
      using medium = __fbthrift_refl_impl::reflected_no_annotations;
      using biggish = __fbthrift_refl_impl::reflected_no_annotations;
      using tiny = __fbthrift_refl_impl::reflected_no_annotations;
    };

    struct __fbthrift_keys {
      using cpp_minimize_padding = __fbthrift_strings_module::cpp_minimize_padding;
    };

    struct __fbthrift_values {
      using cpp_minimize_padding = ::fatal::sequence<char, '1'>;
    };

   public:
    using keys = __fbthrift_keys;
    using values = __fbthrift_values;
    using map = ::fatal::list<
        ::apache::thrift::annotation<keys::cpp_minimize_padding, values::cpp_minimize_padding>
    >;
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_small {
    using owner = ::apache::thrift::fixtures::types::MinPadding;
    using name = __fbthrift_strings_module::__fbthrift_hash_81db8ebbbbc69c6c6ad4a6aa92b76e0c08af547da236b9e2c9dbe1d8285a8130;
    using type = ::std::int8_t;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::small>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::small>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::small>;
  };
  struct __fbthrift_member_big {
    using owner = ::apache::thrift::fixtures::types::MinPadding;
    using name = __fbthrift_strings_module::__fbthrift_hash_2a21fe6d592a19b7de898b50eb53c429608de1a66f3e9f62da19714a770553d1;
    using type = ::std::int64_t;
    static constexpr ::apache::thrift::field_id_t id = 2;
    static constexpr auto optional = ::apache::thrift::optionality::required;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::big>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::big>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::big>;
  };
  struct __fbthrift_member_medium {
    using owner = ::apache::thrift::fixtures::types::MinPadding;
    using name = __fbthrift_strings_module::__fbthrift_hash_c082456a7766e23a18db084cd34b6ff510baef506548b897cc80e9b7d3e121c8;
    using type = ::std::int16_t;
    static constexpr ::apache::thrift::field_id_t id = 3;
    static constexpr auto optional = ::apache::thrift::optionality::required;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::medium>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::medium>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::medium>;
  };
  struct __fbthrift_member_biggish {
    using owner = ::apache::thrift::fixtures::types::MinPadding;
    using name = __fbthrift_strings_module::__fbthrift_hash_7af8f5c4c7c52a8a8bd7151e1a20e8003de8a0f5b4c08676355b69772b2ae1d7;
    using type = ::std::int32_t;
    static constexpr ::apache::thrift::field_id_t id = 4;
    static constexpr auto optional = ::apache::thrift::optionality::required;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::biggish>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::biggish>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::biggish>;
  };
  struct __fbthrift_member_tiny {
    using owner = ::apache::thrift::fixtures::types::MinPadding;
    using name = __fbthrift_strings_module::__fbthrift_hash_8950abfda7b727630760dd35bcf5c3daa7631aff223a90f7728c0d2521dde10c;
    using type = ::std::int8_t;
    static constexpr ::apache::thrift::field_id_t id = 5;
    static constexpr auto optional = ::apache::thrift::optionality::required;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::tiny>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::tiny>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::tiny>;
  };

  struct __fbthrift_member {
    using small = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_small>;
    using big = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_big>;
    using medium = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_medium>;
    using biggish = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_biggish>;
    using tiny = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_tiny>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::MinPadding;
  using name = __fbthrift_strings_module::MinPadding;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::small,
      member::big,
      member::medium,
      member::biggish,
      member::tiny
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(1783103042197984780ull)
  >;
};

class MyDataItem_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
    };

    struct __fbthrift_keys {
      using cpp2_noncomparable = __fbthrift_strings_module::cpp2_noncomparable;
    };

    struct __fbthrift_values {
      using cpp2_noncomparable = ::fatal::sequence<char, '1'>;
    };

   public:
    using keys = __fbthrift_keys;
    using values = __fbthrift_values;
    using map = ::fatal::list<
        ::apache::thrift::annotation<keys::cpp2_noncomparable, values::cpp2_noncomparable>
    >;
    using members = __fbthrift_members;
  };


  struct __fbthrift_member {
  };
 public:
  using type = ::apache::thrift::fixtures::types::MyDataItem;
  using name = __fbthrift_strings_module::MyDataItem;
  using member = __fbthrift_member;
  using members = ::fatal::list<
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(4790436723586763884ull)
  >;
};

class MyStruct_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using MyIntField = __fbthrift_refl_impl::reflected_no_annotations;
      using MyStringField = __fbthrift_refl_impl::reflected_no_annotations;
      using majorVer = __fbthrift_refl_impl::reflected_no_annotations;
      using data = __fbthrift_refl_impl::reflected_no_annotations;
    };

    struct __fbthrift_keys {
      using cpp2_noncomparable = __fbthrift_strings_module::cpp2_noncomparable;
    };

    struct __fbthrift_values {
      using cpp2_noncomparable = ::fatal::sequence<char, '1'>;
    };

   public:
    using keys = __fbthrift_keys;
    using values = __fbthrift_values;
    using map = ::fatal::list<
        ::apache::thrift::annotation<keys::cpp2_noncomparable, values::cpp2_noncomparable>
    >;
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_MyIntField {
    using owner = ::apache::thrift::fixtures::types::MyStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_efda3b7db6b44fe655cfcf36ce339c894e64337d7f192d6ad81a95d5c98a2359;
    using type = ::std::int64_t;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::MyIntField>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::MyIntField>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::MyIntField>;
  };
  struct __fbthrift_member_MyStringField {
    using owner = ::apache::thrift::fixtures::types::MyStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_b2a30733d38d491ca5f3dcb7fd435cd0774f957f27f886d82bd5018c558abb72;
    using type = ::std::string;
    static constexpr ::apache::thrift::field_id_t id = 2;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::MyStringField>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::MyStringField>;
    using type_class = ::apache::thrift::type_class::string;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::MyStringField>;
  };
  struct __fbthrift_member_majorVer {
    using owner = ::apache::thrift::fixtures::types::MyStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_79e4897b515e7d37977a04ed0e467ea2f4c4e220207f77f3b8060ada31502e8d;
    using type = ::std::int64_t;
    static constexpr ::apache::thrift::field_id_t id = 3;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::majorVer>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::majorVer>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::majorVer>;
  };
  struct __fbthrift_member_data {
    using owner = ::apache::thrift::fixtures::types::MyStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_3a6eb0790f39ac87c94f3856b2dd2c5d110e6811602261a9a923d3bb23adc8b7;
    using type = ::apache::thrift::fixtures::types::MyDataItem;
    static constexpr ::apache::thrift::field_id_t id = 4;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::data>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::data>;
    using type_class = ::apache::thrift::type_class::structure;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::data>;
  };

  struct __fbthrift_member {
    using MyIntField = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_MyIntField>;
    using MyStringField = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_MyStringField>;
    using majorVer = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_majorVer>;
    using data = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_data>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::MyStruct;
  using name = __fbthrift_strings_module::MyStruct;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::MyIntField,
      member::MyStringField,
      member::majorVer,
      member::data
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(7958971832214294220ull)
  >;
};

class Renaming_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using bar = __fbthrift_refl_impl::reflected_no_annotations;
    };

   public:
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_bar {
    using owner = ::apache::thrift::fixtures::types::Renaming;
    using name = __fbthrift_strings_module::__fbthrift_hash_2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae;
    using type = ::std::int64_t;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::bar>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::bar>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::bar>;
  };

  struct __fbthrift_member {
    using bar = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_bar>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::Renaming;
  using name = __fbthrift_strings_module::Renaming;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::bar
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(10718802463879262636ull)
  >;
};

class AnnotatedTypes_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using binary_field = __fbthrift_refl_impl::reflected_no_annotations;
      using list_field = __fbthrift_refl_impl::reflected_no_annotations;
    };

   public:
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_binary_field {
    using owner = ::apache::thrift::fixtures::types::AnnotatedTypes;
    using name = __fbthrift_strings_module::__fbthrift_hash_a3d53ffeeecb838901452e3279a13dcce02e91865d83cb64d8f3e5ed8c18bf03;
    using type = ::apache::thrift::fixtures::types::TBinary;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::binary_field>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::binary_field>;
    using type_class = ::apache::thrift::type_class::binary;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::binary_field>;
  };
  struct __fbthrift_member_list_field {
    using owner = ::apache::thrift::fixtures::types::AnnotatedTypes;
    using name = __fbthrift_strings_module::__fbthrift_hash_ea7bd83abd8b7b855031fc7f4e0e961fe4c408203a46f5126d609632ddf0c641;
    using type = ::apache::thrift::fixtures::types::SomeListOfTypeMap;
    static constexpr ::apache::thrift::field_id_t id = 2;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::list_field>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::list_field>;
    using type_class = ::apache::thrift::type_class::list<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::list_field>;
  };

  struct __fbthrift_member {
    using binary_field = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_binary_field>;
    using list_field = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_list_field>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::AnnotatedTypes;
  using name = __fbthrift_strings_module::AnnotatedTypes;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::binary_field,
      member::list_field
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(17983424159904177676ull)
  >;
};

class ForwardUsageStruct_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using foo = __fbthrift_refl_impl::reflected_no_annotations;
    };

   public:
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_foo {
    using owner = ::apache::thrift::fixtures::types::ForwardUsageStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae;
    using type = ::apache::thrift::fixtures::types::ForwardUsageRoot;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::optional;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::foo>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::foo>;
    using type_class = ::apache::thrift::type_class::structure;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::foo>;
  };

  struct __fbthrift_member {
    using foo = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_foo>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::ForwardUsageStruct;
  using name = __fbthrift_strings_module::ForwardUsageStruct;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::foo
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(17360210329199062572ull)
  >;
};

class ForwardUsageRoot_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using ForwardUsageStruct = __fbthrift_refl_impl::reflected_no_annotations;
      using ForwardUsageByRef = __fbthrift_refl_impl::reflected_no_annotations;
    };

   public:
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_ForwardUsageStruct {
    using owner = ::apache::thrift::fixtures::types::ForwardUsageRoot;
    using name = __fbthrift_strings_module::__fbthrift_hash_8a7fe0db5af3fa9a49c63f9c602f11a2d5463fd3a3390a101182571af7ef2b7b;
    using type = ::apache::thrift::fixtures::types::ForwardUsageStruct;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::optional;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::ForwardUsageStruct>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::ForwardUsageStruct>;
    using type_class = ::apache::thrift::type_class::structure;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::ForwardUsageStruct>;
  };
  struct __fbthrift_member_ForwardUsageByRef {
    using owner = ::apache::thrift::fixtures::types::ForwardUsageRoot;
    using name = __fbthrift_strings_module::__fbthrift_hash_19a44da6ac03b8c8144c3a99a91ac0d0734415ad3c06fc30cee8a5a9121b9d5f;
    using type = ::apache::thrift::fixtures::types::ForwardUsageByRef;
    static constexpr ::apache::thrift::field_id_t id = 2;
    static constexpr auto optional = ::apache::thrift::optionality::optional;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::ForwardUsageByRef>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::ForwardUsageByRef>;
    using type_class = ::apache::thrift::type_class::structure;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::ForwardUsageByRef>;
  };

  struct __fbthrift_member {
    using ForwardUsageStruct = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_ForwardUsageStruct>;
    using ForwardUsageByRef = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_ForwardUsageByRef>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::ForwardUsageRoot;
  using name = __fbthrift_strings_module::ForwardUsageRoot;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::ForwardUsageStruct,
      member::ForwardUsageByRef
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(15709653741992939980ull)
  >;
};

class ForwardUsageByRef_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using foo = __fbthrift_refl_impl::reflected_no_annotations;
    };

   public:
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_foo {
    using owner = ::apache::thrift::fixtures::types::ForwardUsageByRef;
    using name = __fbthrift_strings_module::__fbthrift_hash_2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae;
    using type = ::apache::thrift::fixtures::types::ForwardUsageRoot;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::optional;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::foo>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::foo>;
    using type_class = ::apache::thrift::type_class::structure;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::foo>;
  };

  struct __fbthrift_member {
    using foo = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_foo>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::ForwardUsageByRef;
  using name = __fbthrift_strings_module::ForwardUsageByRef;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::foo
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(7502886793208594252ull)
  >;
};

class NoexceptMoveEmpty_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
    };

    struct __fbthrift_keys {
      using cpp_noexcept_move = __fbthrift_strings_module::cpp_noexcept_move;
    };

    struct __fbthrift_values {
      using cpp_noexcept_move = ::fatal::sequence<char, '1'>;
    };

   public:
    using keys = __fbthrift_keys;
    using values = __fbthrift_values;
    using map = ::fatal::list<
        ::apache::thrift::annotation<keys::cpp_noexcept_move, values::cpp_noexcept_move>
    >;
    using members = __fbthrift_members;
  };


  struct __fbthrift_member {
  };
 public:
  using type = ::apache::thrift::fixtures::types::NoexceptMoveEmpty;
  using name = __fbthrift_strings_module::NoexceptMoveEmpty;
  using member = __fbthrift_member;
  using members = ::fatal::list<
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(11676134689775956652ull)
  >;
};

class NoexceptMoveSimpleStruct_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using boolField = __fbthrift_refl_impl::reflected_no_annotations;
    };

    struct __fbthrift_keys {
      using cpp_noexcept_move = __fbthrift_strings_module::cpp_noexcept_move;
    };

    struct __fbthrift_values {
      using cpp_noexcept_move = ::fatal::sequence<char, '1'>;
    };

   public:
    using keys = __fbthrift_keys;
    using values = __fbthrift_values;
    using map = ::fatal::list<
        ::apache::thrift::annotation<keys::cpp_noexcept_move, values::cpp_noexcept_move>
    >;
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_boolField {
    using owner = ::apache::thrift::fixtures::types::NoexceptMoveSimpleStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_7344f88cfc3a0641f9d9c1151035f98a899ffcba15f609b3ace596c7a2e5eeff;
    using type = ::std::int64_t;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::boolField>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::boolField>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::boolField>;
  };

  struct __fbthrift_member {
    using boolField = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_boolField>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::NoexceptMoveSimpleStruct;
  using name = __fbthrift_strings_module::NoexceptMoveSimpleStruct;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::boolField
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(18391302915442473772ull)
  >;
};

class NoexceptMoveComplexStruct_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using MyBoolField = __fbthrift_refl_impl::reflected_no_annotations;
      using MyIntField = __fbthrift_refl_impl::reflected_no_annotations;
      using MyStringField = __fbthrift_refl_impl::reflected_no_annotations;
      using MyStringField2 = __fbthrift_refl_impl::reflected_no_annotations;
      using MyBinaryField = __fbthrift_refl_impl::reflected_no_annotations;
      using MyBinaryField2 = __fbthrift_refl_impl::reflected_no_annotations;
      using MyBinaryField3 = __fbthrift_refl_impl::reflected_no_annotations;
      using MyBinaryListField4 = __fbthrift_refl_impl::reflected_no_annotations;
      using MyMapEnumAndInt = __fbthrift_refl_impl::reflected_no_annotations;
    };

    struct __fbthrift_keys {
      using cpp_noexcept_move = __fbthrift_strings_module::cpp_noexcept_move;
    };

    struct __fbthrift_values {
      using cpp_noexcept_move = ::fatal::sequence<char, '1'>;
    };

   public:
    using keys = __fbthrift_keys;
    using values = __fbthrift_values;
    using map = ::fatal::list<
        ::apache::thrift::annotation<keys::cpp_noexcept_move, values::cpp_noexcept_move>
    >;
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_MyBoolField {
    using owner = ::apache::thrift::fixtures::types::NoexceptMoveComplexStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_b7d039bee92d4ff161705e900e0bff872e78ff5be3f367911e49edaf3e716947;
    using type = bool;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::MyBoolField>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::MyBoolField>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::MyBoolField>;
  };
  struct __fbthrift_member_MyIntField {
    using owner = ::apache::thrift::fixtures::types::NoexceptMoveComplexStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_efda3b7db6b44fe655cfcf36ce339c894e64337d7f192d6ad81a95d5c98a2359;
    using type = ::std::int64_t;
    static constexpr ::apache::thrift::field_id_t id = 2;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::MyIntField>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::MyIntField>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::MyIntField>;
  };
  struct __fbthrift_member_MyStringField {
    using owner = ::apache::thrift::fixtures::types::NoexceptMoveComplexStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_b2a30733d38d491ca5f3dcb7fd435cd0774f957f27f886d82bd5018c558abb72;
    using type = ::std::string;
    static constexpr ::apache::thrift::field_id_t id = 3;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::MyStringField>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::MyStringField>;
    using type_class = ::apache::thrift::type_class::string;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::MyStringField>;
  };
  struct __fbthrift_member_MyStringField2 {
    using owner = ::apache::thrift::fixtures::types::NoexceptMoveComplexStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_c71ece60df4b15681a48d377f2c27b4e9c2e95e74f09dbfa070a7175138895c6;
    using type = ::std::string;
    static constexpr ::apache::thrift::field_id_t id = 4;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::MyStringField2>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::MyStringField2>;
    using type_class = ::apache::thrift::type_class::string;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::MyStringField2>;
  };
  struct __fbthrift_member_MyBinaryField {
    using owner = ::apache::thrift::fixtures::types::NoexceptMoveComplexStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_b990788541621b423065dbd4854d7828982345f9e894712b245de816f7b01c08;
    using type = ::std::string;
    static constexpr ::apache::thrift::field_id_t id = 5;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::MyBinaryField>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::MyBinaryField>;
    using type_class = ::apache::thrift::type_class::binary;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::MyBinaryField>;
  };
  struct __fbthrift_member_MyBinaryField2 {
    using owner = ::apache::thrift::fixtures::types::NoexceptMoveComplexStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_52947f27873dfc0055cd1c77444997c1984e68f1fc59d8ce37d03289b07a590e;
    using type = ::std::string;
    static constexpr ::apache::thrift::field_id_t id = 6;
    static constexpr auto optional = ::apache::thrift::optionality::optional;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::MyBinaryField2>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::MyBinaryField2>;
    using type_class = ::apache::thrift::type_class::binary;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::MyBinaryField2>;
  };
  struct __fbthrift_member_MyBinaryField3 {
    using owner = ::apache::thrift::fixtures::types::NoexceptMoveComplexStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_fb6bdbc1e35b5b8ab22480d6ab3b1e32944a9c94fa2d587b0a52833284cf8e01;
    using type = ::std::string;
    static constexpr ::apache::thrift::field_id_t id = 7;
    static constexpr auto optional = ::apache::thrift::optionality::required;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::MyBinaryField3>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::MyBinaryField3>;
    using type_class = ::apache::thrift::type_class::binary;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::MyBinaryField3>;
  };
  struct __fbthrift_member_MyBinaryListField4 {
    using owner = ::apache::thrift::fixtures::types::NoexceptMoveComplexStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_2e54f5233578189784a1df2243a55418ebaf80680ada3332bff39422aad513cf;
    using type = ::std::vector<::std::string>;
    static constexpr ::apache::thrift::field_id_t id = 8;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::MyBinaryListField4>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::MyBinaryListField4>;
    using type_class = ::apache::thrift::type_class::list<::apache::thrift::type_class::binary>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::MyBinaryListField4>;
  };
  struct __fbthrift_member_MyMapEnumAndInt {
    using owner = ::apache::thrift::fixtures::types::NoexceptMoveComplexStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_acb2b9be972cf644d03da8b8f9c39133d122094133c61c2fdd2b634bfa7177a9;
    using type = ::std::map<::apache::thrift::fixtures::types::MyEnumA, ::std::string>;
    static constexpr ::apache::thrift::field_id_t id = 9;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::MyMapEnumAndInt>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::MyMapEnumAndInt>;
    using type_class = ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::MyMapEnumAndInt>;
  };

  struct __fbthrift_member {
    using MyBoolField = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_MyBoolField>;
    using MyIntField = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_MyIntField>;
    using MyStringField = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_MyStringField>;
    using MyStringField2 = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_MyStringField2>;
    using MyBinaryField = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_MyBinaryField>;
    using MyBinaryField2 = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_MyBinaryField2>;
    using MyBinaryField3 = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_MyBinaryField3>;
    using MyBinaryListField4 = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_MyBinaryListField4>;
    using MyMapEnumAndInt = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_MyMapEnumAndInt>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::NoexceptMoveComplexStruct;
  using name = __fbthrift_strings_module::NoexceptMoveComplexStruct;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::MyBoolField,
      member::MyIntField,
      member::MyStringField,
      member::MyStringField2,
      member::MyBinaryField,
      member::MyBinaryField2,
      member::MyBinaryField3,
      member::MyBinaryListField4,
      member::MyMapEnumAndInt
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(4890647338471635948ull)
  >;
};

class AllocatorAware_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using aa_list = __fbthrift_refl_impl::reflected_no_annotations;
      using aa_set = __fbthrift_refl_impl::reflected_no_annotations;
      using aa_map = __fbthrift_refl_impl::reflected_no_annotations;
      using aa_string = __fbthrift_refl_impl::reflected_no_annotations;
      using not_a_container = __fbthrift_refl_impl::reflected_no_annotations;
    };

    struct __fbthrift_keys {
      using cpp_allocator = __fbthrift_strings_module::cpp_allocator;
    };

    struct __fbthrift_values {
      using cpp_allocator = ::fatal::sequence<char, 's', 'o', 'm', 'e', '_', 'a', 'l', 'l', 'o', 'c', 'a', 't', 'o', 'r'>;
    };

   public:
    using keys = __fbthrift_keys;
    using values = __fbthrift_values;
    using map = ::fatal::list<
        ::apache::thrift::annotation<keys::cpp_allocator, values::cpp_allocator>
    >;
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_aa_list {
    using owner = ::apache::thrift::fixtures::types::AllocatorAware;
    using name = __fbthrift_strings_module::__fbthrift_hash_880a35405ed995030f9d4b4939e636855aa93e6e6173fe61bd40adec636dec29;
    using type = ::std::vector<::std::int32_t>;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::aa_list>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::aa_list>;
    using type_class = ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::aa_list>;
  };
  struct __fbthrift_member_aa_set {
    using owner = ::apache::thrift::fixtures::types::AllocatorAware;
    using name = __fbthrift_strings_module::__fbthrift_hash_bfaf0acc93bb6b488b6a5a8d0bcc12a66bdac79da50021adc4da36e22a6af810;
    using type = ::std::set<::std::int32_t>;
    static constexpr ::apache::thrift::field_id_t id = 2;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::aa_set>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::aa_set>;
    using type_class = ::apache::thrift::type_class::set<::apache::thrift::type_class::integral>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::aa_set>;
  };
  struct __fbthrift_member_aa_map {
    using owner = ::apache::thrift::fixtures::types::AllocatorAware;
    using name = __fbthrift_strings_module::__fbthrift_hash_4b52fb402e58543eb406111961ce4b6760c045edd3af4068b93a1ff7ac4ccfc1;
    using type = ::std::map<::std::int32_t, ::std::int32_t>;
    static constexpr ::apache::thrift::field_id_t id = 3;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::aa_map>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::aa_map>;
    using type_class = ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::aa_map>;
  };
  struct __fbthrift_member_aa_string {
    using owner = ::apache::thrift::fixtures::types::AllocatorAware;
    using name = __fbthrift_strings_module::__fbthrift_hash_f119bbf23aedae2e52bbe52603d5596f495df52e77522ef10e4e47e6cef18e97;
    using type = ::std::string;
    static constexpr ::apache::thrift::field_id_t id = 4;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::aa_string>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::aa_string>;
    using type_class = ::apache::thrift::type_class::string;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::aa_string>;
  };
  struct __fbthrift_member_not_a_container {
    using owner = ::apache::thrift::fixtures::types::AllocatorAware;
    using name = __fbthrift_strings_module::__fbthrift_hash_f6db24d8a8de900ae31838bf4f66ecfa5ce280df4954ad1d3da4a0baef6450fc;
    using type = ::std::int32_t;
    static constexpr ::apache::thrift::field_id_t id = 5;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::not_a_container>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::not_a_container>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::not_a_container>;
  };

  struct __fbthrift_member {
    using aa_list = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_aa_list>;
    using aa_set = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_aa_set>;
    using aa_map = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_aa_map>;
    using aa_string = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_aa_string>;
    using not_a_container = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_not_a_container>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::AllocatorAware;
  using name = __fbthrift_strings_module::AllocatorAware;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::aa_list,
      member::aa_set,
      member::aa_map,
      member::aa_string,
      member::not_a_container
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(5560513471192516556ull)
  >;
};

class AllocatorAware2_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using not_a_container = __fbthrift_refl_impl::reflected_no_annotations;
    };

    struct __fbthrift_keys {
      using cpp_allocator = __fbthrift_strings_module::cpp_allocator;
    };

    struct __fbthrift_values {
      using cpp_allocator = ::fatal::sequence<char, 's', 'o', 'm', 'e', '_', 'a', 'l', 'l', 'o', 'c', 'a', 't', 'o', 'r'>;
    };

   public:
    using keys = __fbthrift_keys;
    using values = __fbthrift_values;
    using map = ::fatal::list<
        ::apache::thrift::annotation<keys::cpp_allocator, values::cpp_allocator>
    >;
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_not_a_container {
    using owner = ::apache::thrift::fixtures::types::AllocatorAware2;
    using name = __fbthrift_strings_module::__fbthrift_hash_f6db24d8a8de900ae31838bf4f66ecfa5ce280df4954ad1d3da4a0baef6450fc;
    using type = ::std::int32_t;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::not_a_container>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::not_a_container>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::not_a_container>;
  };

  struct __fbthrift_member {
    using not_a_container = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_not_a_container>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::AllocatorAware2;
  using name = __fbthrift_strings_module::AllocatorAware2;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::not_a_container
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(8959389212932404140ull)
  >;
};

class TypedefStruct_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using i32_field = __fbthrift_refl_impl::reflected_no_annotations;
      using IntTypedef_field = __fbthrift_refl_impl::reflected_no_annotations;
      using UintTypedef_field = __fbthrift_refl_impl::reflected_no_annotations;
    };

   public:
    using members = __fbthrift_members;
  };

  struct __fbthrift_member_i32_field {
    using owner = ::apache::thrift::fixtures::types::TypedefStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_463a2e2458322db48dcc738e6792afe31f8fb1883cd29f0ecae7719e93de0818;
    using type = ::std::int32_t;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::i32_field>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::i32_field>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::i32_field>;
  };
  struct __fbthrift_member_IntTypedef_field {
    using owner = ::apache::thrift::fixtures::types::TypedefStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_6d4b9ee50b6b0430209f88e2ce0c8ffca5a1b4372666061653e53e2278e74300;
    using type = ::apache::thrift::fixtures::types::IntTypedef;
    static constexpr ::apache::thrift::field_id_t id = 2;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::IntTypedef_field>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::IntTypedef_field>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::IntTypedef_field>;
  };
  struct __fbthrift_member_UintTypedef_field {
    using owner = ::apache::thrift::fixtures::types::TypedefStruct;
    using name = __fbthrift_strings_module::__fbthrift_hash_5ab816af8034a41718cabc63bd821ab7283b905d4770d0a2952ce8e00bb38520;
    using type = std::uint32_t;
    static constexpr ::apache::thrift::field_id_t id = 3;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::UintTypedef_field>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::UintTypedef_field>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::UintTypedef_field>;
  };

  struct __fbthrift_member {
    using i32_field = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_i32_field>;
    using IntTypedef_field = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_IntTypedef_field>;
    using UintTypedef_field = ::apache::thrift::reflected_struct_data_member<__fbthrift_member_UintTypedef_field>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::TypedefStruct;
  using name = __fbthrift_strings_module::TypedefStruct;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::i32_field,
      member::IntTypedef_field,
      member::UintTypedef_field
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(7079524667603799276ull)
  >;
};

class StructWithDoubleUnderscores_struct_traits {
  class __fbthrift_annotations : public __fbthrift_refl_impl::no_annotations {
    class __fbthrift_members {
     public:
      using __field = __fbthrift_refl_impl::reflected_no_annotations;
    };

   public:
    using members = __fbthrift_members;
  };

  struct __fbthrift_member___field {
    using owner = ::apache::thrift::fixtures::types::StructWithDoubleUnderscores;
    using name = __fbthrift_strings_module::__fbthrift_hash_a1cdc34d520653dc2c8afd403ec6a3a1541ce66b6511e8cd5450aa25c7586db8;
    using type = ::std::int32_t;
    static constexpr ::apache::thrift::field_id_t id = 1;
    static constexpr auto optional = ::apache::thrift::optionality::required_of_writer;
    using getter = __fbthrift_refl_impl::data_member_accessor<::apache::thrift::tag::__field>;
    using field_ref_getter = ::apache::thrift::detail::invoke_reffer<::apache::thrift::tag::__field>;
    using type_class = ::apache::thrift::type_class::integral;
    using annotations = ::apache::thrift::reflected_annotations<__fbthrift_annotations::members::__field>;
  };

  struct __fbthrift_member {
    using __field = ::apache::thrift::reflected_struct_data_member<__fbthrift_member___field>;
  };
 public:
  using type = ::apache::thrift::fixtures::types::StructWithDoubleUnderscores;
  using name = __fbthrift_strings_module::StructWithDoubleUnderscores;
  using member = __fbthrift_member;
  using members = ::fatal::list<
      member::__field
  >;
  using members_annotations = __fbthrift_annotations::members;
  using metadata = ::apache::thrift::detail::type_common_metadata_impl<
      module_tags::module,
      ::apache::thrift::reflected_annotations<__fbthrift_annotations>,
      static_cast<::apache::thrift::legacy_type_id_t>(608558106338578572ull)
  >;
};

} // __fbthrift_refl

THRIFT_REGISTER_STRUCT_TRAITS(decorated_struct, __fbthrift_refl::decorated_struct_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(ContainerStruct, __fbthrift_refl::ContainerStruct_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(CppTypeStruct, __fbthrift_refl::CppTypeStruct_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(VirtualStruct, __fbthrift_refl::VirtualStruct_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(MyStructWithForwardRefEnum, __fbthrift_refl::MyStructWithForwardRefEnum_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(TrivialNumeric, __fbthrift_refl::TrivialNumeric_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(TrivialNestedWithDefault, __fbthrift_refl::TrivialNestedWithDefault_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(ComplexString, __fbthrift_refl::ComplexString_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(ComplexNestedWithDefault, __fbthrift_refl::ComplexNestedWithDefault_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(MinPadding, __fbthrift_refl::MinPadding_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(MyDataItem, __fbthrift_refl::MyDataItem_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(MyStruct, __fbthrift_refl::MyStruct_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(Renaming, __fbthrift_refl::Renaming_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(AnnotatedTypes, __fbthrift_refl::AnnotatedTypes_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(ForwardUsageStruct, __fbthrift_refl::ForwardUsageStruct_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(ForwardUsageRoot, __fbthrift_refl::ForwardUsageRoot_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(ForwardUsageByRef, __fbthrift_refl::ForwardUsageByRef_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(NoexceptMoveEmpty, __fbthrift_refl::NoexceptMoveEmpty_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(NoexceptMoveSimpleStruct, __fbthrift_refl::NoexceptMoveSimpleStruct_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(NoexceptMoveComplexStruct, __fbthrift_refl::NoexceptMoveComplexStruct_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(AllocatorAware, __fbthrift_refl::AllocatorAware_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(AllocatorAware2, __fbthrift_refl::AllocatorAware2_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(TypedefStruct, __fbthrift_refl::TypedefStruct_struct_traits);
THRIFT_REGISTER_STRUCT_TRAITS(StructWithDoubleUnderscores, __fbthrift_refl::StructWithDoubleUnderscores_struct_traits);
}}}} // apache::thrift::fixtures::types
