Home | History | Annotate | Download | only in tests
      1 // automatically generated by the FlatBuffers compiler, do not modify
      2 
      3 
      4 #ifndef FLATBUFFERS_GENERATED_MONSTERTEST_MYGAME_EXAMPLE_H_
      5 #define FLATBUFFERS_GENERATED_MONSTERTEST_MYGAME_EXAMPLE_H_
      6 
      7 #include "flatbuffers/flatbuffers.h"
      8 #include "flatbuffers/flexbuffers.h"
      9 
     10 namespace MyGame {
     11 
     12 struct InParentNamespace;
     13 struct InParentNamespaceT;
     14 
     15 namespace Example2 {
     16 
     17 struct Monster;
     18 struct MonsterT;
     19 
     20 }  // namespace Example2
     21 
     22 namespace Example {
     23 
     24 struct Test;
     25 
     26 struct TestSimpleTableWithEnum;
     27 struct TestSimpleTableWithEnumT;
     28 
     29 struct Vec3;
     30 
     31 struct Ability;
     32 
     33 struct Stat;
     34 struct StatT;
     35 
     36 struct Referrable;
     37 struct ReferrableT;
     38 
     39 struct Monster;
     40 struct MonsterT;
     41 
     42 struct TypeAliases;
     43 struct TypeAliasesT;
     44 
     45 }  // namespace Example
     46 
     47 bool operator==(const InParentNamespaceT &lhs, const InParentNamespaceT &rhs);
     48 namespace Example2 {
     49 
     50 bool operator==(const MonsterT &lhs, const MonsterT &rhs);
     51 }  // namespace Example2
     52 
     53 namespace Example {
     54 
     55 bool operator==(const Test &lhs, const Test &rhs);
     56 bool operator==(const TestSimpleTableWithEnumT &lhs, const TestSimpleTableWithEnumT &rhs);
     57 bool operator==(const Vec3 &lhs, const Vec3 &rhs);
     58 bool operator==(const Ability &lhs, const Ability &rhs);
     59 bool operator==(const StatT &lhs, const StatT &rhs);
     60 bool operator==(const ReferrableT &lhs, const ReferrableT &rhs);
     61 bool operator==(const MonsterT &lhs, const MonsterT &rhs);
     62 bool operator==(const TypeAliasesT &lhs, const TypeAliasesT &rhs);
     63 
     64 }  // namespace Example
     65 
     66 inline const flatbuffers::TypeTable *InParentNamespaceTypeTable();
     67 
     68 namespace Example2 {
     69 
     70 inline const flatbuffers::TypeTable *MonsterTypeTable();
     71 
     72 }  // namespace Example2
     73 
     74 namespace Example {
     75 
     76 inline const flatbuffers::TypeTable *TestTypeTable();
     77 
     78 inline const flatbuffers::TypeTable *TestSimpleTableWithEnumTypeTable();
     79 
     80 inline const flatbuffers::TypeTable *Vec3TypeTable();
     81 
     82 inline const flatbuffers::TypeTable *AbilityTypeTable();
     83 
     84 inline const flatbuffers::TypeTable *StatTypeTable();
     85 
     86 inline const flatbuffers::TypeTable *ReferrableTypeTable();
     87 
     88 inline const flatbuffers::TypeTable *MonsterTypeTable();
     89 
     90 inline const flatbuffers::TypeTable *TypeAliasesTypeTable();
     91 
     92 enum Color {
     93   Color_Red = 1,
     94   Color_Green = 2,
     95   Color_Blue = 8,
     96   Color_NONE = 0,
     97   Color_ANY = 11
     98 };
     99 
    100 inline const Color (&EnumValuesColor())[3] {
    101   static const Color values[] = {
    102     Color_Red,
    103     Color_Green,
    104     Color_Blue
    105   };
    106   return values;
    107 }
    108 
    109 inline const char * const *EnumNamesColor() {
    110   static const char * const names[] = {
    111     "Red",
    112     "Green",
    113     "",
    114     "",
    115     "",
    116     "",
    117     "",
    118     "Blue",
    119     nullptr
    120   };
    121   return names;
    122 }
    123 
    124 inline const char *EnumNameColor(Color e) {
    125   if (e < Color_Red || e > Color_Blue) return "";
    126   const size_t index = static_cast<int>(e) - static_cast<int>(Color_Red);
    127   return EnumNamesColor()[index];
    128 }
    129 
    130 enum Any {
    131   Any_NONE = 0,
    132   Any_Monster = 1,
    133   Any_TestSimpleTableWithEnum = 2,
    134   Any_MyGame_Example2_Monster = 3,
    135   Any_MIN = Any_NONE,
    136   Any_MAX = Any_MyGame_Example2_Monster
    137 };
    138 
    139 inline const Any (&EnumValuesAny())[4] {
    140   static const Any values[] = {
    141     Any_NONE,
    142     Any_Monster,
    143     Any_TestSimpleTableWithEnum,
    144     Any_MyGame_Example2_Monster
    145   };
    146   return values;
    147 }
    148 
    149 inline const char * const *EnumNamesAny() {
    150   static const char * const names[] = {
    151     "NONE",
    152     "Monster",
    153     "TestSimpleTableWithEnum",
    154     "MyGame_Example2_Monster",
    155     nullptr
    156   };
    157   return names;
    158 }
    159 
    160 inline const char *EnumNameAny(Any e) {
    161   if (e < Any_NONE || e > Any_MyGame_Example2_Monster) return "";
    162   const size_t index = static_cast<int>(e);
    163   return EnumNamesAny()[index];
    164 }
    165 
    166 template<typename T> struct AnyTraits {
    167   static const Any enum_value = Any_NONE;
    168 };
    169 
    170 template<> struct AnyTraits<Monster> {
    171   static const Any enum_value = Any_Monster;
    172 };
    173 
    174 template<> struct AnyTraits<TestSimpleTableWithEnum> {
    175   static const Any enum_value = Any_TestSimpleTableWithEnum;
    176 };
    177 
    178 template<> struct AnyTraits<MyGame::Example2::Monster> {
    179   static const Any enum_value = Any_MyGame_Example2_Monster;
    180 };
    181 
    182 struct AnyUnion {
    183   Any type;
    184   void *value;
    185 
    186   AnyUnion() : type(Any_NONE), value(nullptr) {}
    187   AnyUnion(AnyUnion&& u) FLATBUFFERS_NOEXCEPT :
    188     type(Any_NONE), value(nullptr)
    189     { std::swap(type, u.type); std::swap(value, u.value); }
    190   AnyUnion(const AnyUnion &) FLATBUFFERS_NOEXCEPT;
    191   AnyUnion &operator=(const AnyUnion &u) FLATBUFFERS_NOEXCEPT
    192     { AnyUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
    193   AnyUnion &operator=(AnyUnion &&u) FLATBUFFERS_NOEXCEPT
    194     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
    195   ~AnyUnion() { Reset(); }
    196 
    197   void Reset();
    198 
    199 #ifndef FLATBUFFERS_CPP98_STL
    200   template <typename T>
    201   void Set(T&& val) {
    202     Reset();
    203     type = AnyTraits<typename T::TableType>::enum_value;
    204     if (type != Any_NONE) {
    205       value = new T(std::forward<T>(val));
    206     }
    207   }
    208 #endif  // FLATBUFFERS_CPP98_STL
    209 
    210   static void *UnPack(const void *obj, Any type, const flatbuffers::resolver_function_t *resolver);
    211   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
    212 
    213   MonsterT *AsMonster() {
    214     return type == Any_Monster ?
    215       reinterpret_cast<MonsterT *>(value) : nullptr;
    216   }
    217   const MonsterT *AsMonster() const {
    218     return type == Any_Monster ?
    219       reinterpret_cast<const MonsterT *>(value) : nullptr;
    220   }
    221   TestSimpleTableWithEnumT *AsTestSimpleTableWithEnum() {
    222     return type == Any_TestSimpleTableWithEnum ?
    223       reinterpret_cast<TestSimpleTableWithEnumT *>(value) : nullptr;
    224   }
    225   const TestSimpleTableWithEnumT *AsTestSimpleTableWithEnum() const {
    226     return type == Any_TestSimpleTableWithEnum ?
    227       reinterpret_cast<const TestSimpleTableWithEnumT *>(value) : nullptr;
    228   }
    229   MyGame::Example2::MonsterT *AsMyGame_Example2_Monster() {
    230     return type == Any_MyGame_Example2_Monster ?
    231       reinterpret_cast<MyGame::Example2::MonsterT *>(value) : nullptr;
    232   }
    233   const MyGame::Example2::MonsterT *AsMyGame_Example2_Monster() const {
    234     return type == Any_MyGame_Example2_Monster ?
    235       reinterpret_cast<const MyGame::Example2::MonsterT *>(value) : nullptr;
    236   }
    237 };
    238 
    239 
    240 inline bool operator==(const AnyUnion &lhs, const AnyUnion &rhs) {
    241   if (lhs.type != rhs.type) return false;
    242   switch (lhs.type) {
    243     case Any_NONE: {
    244       return true;
    245     }
    246     case Any_Monster: {
    247       return *(reinterpret_cast<const MonsterT *>(lhs.value)) ==
    248              *(reinterpret_cast<const MonsterT *>(rhs.value));
    249     }
    250     case Any_TestSimpleTableWithEnum: {
    251       return *(reinterpret_cast<const TestSimpleTableWithEnumT *>(lhs.value)) ==
    252              *(reinterpret_cast<const TestSimpleTableWithEnumT *>(rhs.value));
    253     }
    254     case Any_MyGame_Example2_Monster: {
    255       return *(reinterpret_cast<const MyGame::Example2::MonsterT *>(lhs.value)) ==
    256              *(reinterpret_cast<const MyGame::Example2::MonsterT *>(rhs.value));
    257     }
    258     default: {
    259       return false;
    260     }
    261   }
    262 }
    263 bool VerifyAny(flatbuffers::Verifier &verifier, const void *obj, Any type);
    264 bool VerifyAnyVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
    265 
    266 enum AnyUniqueAliases {
    267   AnyUniqueAliases_NONE = 0,
    268   AnyUniqueAliases_M = 1,
    269   AnyUniqueAliases_T = 2,
    270   AnyUniqueAliases_M2 = 3,
    271   AnyUniqueAliases_MIN = AnyUniqueAliases_NONE,
    272   AnyUniqueAliases_MAX = AnyUniqueAliases_M2
    273 };
    274 
    275 inline const AnyUniqueAliases (&EnumValuesAnyUniqueAliases())[4] {
    276   static const AnyUniqueAliases values[] = {
    277     AnyUniqueAliases_NONE,
    278     AnyUniqueAliases_M,
    279     AnyUniqueAliases_T,
    280     AnyUniqueAliases_M2
    281   };
    282   return values;
    283 }
    284 
    285 inline const char * const *EnumNamesAnyUniqueAliases() {
    286   static const char * const names[] = {
    287     "NONE",
    288     "M",
    289     "T",
    290     "M2",
    291     nullptr
    292   };
    293   return names;
    294 }
    295 
    296 inline const char *EnumNameAnyUniqueAliases(AnyUniqueAliases e) {
    297   if (e < AnyUniqueAliases_NONE || e > AnyUniqueAliases_M2) return "";
    298   const size_t index = static_cast<int>(e);
    299   return EnumNamesAnyUniqueAliases()[index];
    300 }
    301 
    302 template<typename T> struct AnyUniqueAliasesTraits {
    303   static const AnyUniqueAliases enum_value = AnyUniqueAliases_NONE;
    304 };
    305 
    306 template<> struct AnyUniqueAliasesTraits<Monster> {
    307   static const AnyUniqueAliases enum_value = AnyUniqueAliases_M;
    308 };
    309 
    310 template<> struct AnyUniqueAliasesTraits<TestSimpleTableWithEnum> {
    311   static const AnyUniqueAliases enum_value = AnyUniqueAliases_T;
    312 };
    313 
    314 template<> struct AnyUniqueAliasesTraits<MyGame::Example2::Monster> {
    315   static const AnyUniqueAliases enum_value = AnyUniqueAliases_M2;
    316 };
    317 
    318 struct AnyUniqueAliasesUnion {
    319   AnyUniqueAliases type;
    320   void *value;
    321 
    322   AnyUniqueAliasesUnion() : type(AnyUniqueAliases_NONE), value(nullptr) {}
    323   AnyUniqueAliasesUnion(AnyUniqueAliasesUnion&& u) FLATBUFFERS_NOEXCEPT :
    324     type(AnyUniqueAliases_NONE), value(nullptr)
    325     { std::swap(type, u.type); std::swap(value, u.value); }
    326   AnyUniqueAliasesUnion(const AnyUniqueAliasesUnion &) FLATBUFFERS_NOEXCEPT;
    327   AnyUniqueAliasesUnion &operator=(const AnyUniqueAliasesUnion &u) FLATBUFFERS_NOEXCEPT
    328     { AnyUniqueAliasesUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
    329   AnyUniqueAliasesUnion &operator=(AnyUniqueAliasesUnion &&u) FLATBUFFERS_NOEXCEPT
    330     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
    331   ~AnyUniqueAliasesUnion() { Reset(); }
    332 
    333   void Reset();
    334 
    335 #ifndef FLATBUFFERS_CPP98_STL
    336   template <typename T>
    337   void Set(T&& val) {
    338     Reset();
    339     type = AnyUniqueAliasesTraits<typename T::TableType>::enum_value;
    340     if (type != AnyUniqueAliases_NONE) {
    341       value = new T(std::forward<T>(val));
    342     }
    343   }
    344 #endif  // FLATBUFFERS_CPP98_STL
    345 
    346   static void *UnPack(const void *obj, AnyUniqueAliases type, const flatbuffers::resolver_function_t *resolver);
    347   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
    348 
    349   MonsterT *AsM() {
    350     return type == AnyUniqueAliases_M ?
    351       reinterpret_cast<MonsterT *>(value) : nullptr;
    352   }
    353   const MonsterT *AsM() const {
    354     return type == AnyUniqueAliases_M ?
    355       reinterpret_cast<const MonsterT *>(value) : nullptr;
    356   }
    357   TestSimpleTableWithEnumT *AsT() {
    358     return type == AnyUniqueAliases_T ?
    359       reinterpret_cast<TestSimpleTableWithEnumT *>(value) : nullptr;
    360   }
    361   const TestSimpleTableWithEnumT *AsT() const {
    362     return type == AnyUniqueAliases_T ?
    363       reinterpret_cast<const TestSimpleTableWithEnumT *>(value) : nullptr;
    364   }
    365   MyGame::Example2::MonsterT *AsM2() {
    366     return type == AnyUniqueAliases_M2 ?
    367       reinterpret_cast<MyGame::Example2::MonsterT *>(value) : nullptr;
    368   }
    369   const MyGame::Example2::MonsterT *AsM2() const {
    370     return type == AnyUniqueAliases_M2 ?
    371       reinterpret_cast<const MyGame::Example2::MonsterT *>(value) : nullptr;
    372   }
    373 };
    374 
    375 
    376 inline bool operator==(const AnyUniqueAliasesUnion &lhs, const AnyUniqueAliasesUnion &rhs) {
    377   if (lhs.type != rhs.type) return false;
    378   switch (lhs.type) {
    379     case AnyUniqueAliases_NONE: {
    380       return true;
    381     }
    382     case AnyUniqueAliases_M: {
    383       return *(reinterpret_cast<const MonsterT *>(lhs.value)) ==
    384              *(reinterpret_cast<const MonsterT *>(rhs.value));
    385     }
    386     case AnyUniqueAliases_T: {
    387       return *(reinterpret_cast<const TestSimpleTableWithEnumT *>(lhs.value)) ==
    388              *(reinterpret_cast<const TestSimpleTableWithEnumT *>(rhs.value));
    389     }
    390     case AnyUniqueAliases_M2: {
    391       return *(reinterpret_cast<const MyGame::Example2::MonsterT *>(lhs.value)) ==
    392              *(reinterpret_cast<const MyGame::Example2::MonsterT *>(rhs.value));
    393     }
    394     default: {
    395       return false;
    396     }
    397   }
    398 }
    399 bool VerifyAnyUniqueAliases(flatbuffers::Verifier &verifier, const void *obj, AnyUniqueAliases type);
    400 bool VerifyAnyUniqueAliasesVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
    401 
    402 enum AnyAmbiguousAliases {
    403   AnyAmbiguousAliases_NONE = 0,
    404   AnyAmbiguousAliases_M1 = 1,
    405   AnyAmbiguousAliases_M2 = 2,
    406   AnyAmbiguousAliases_M3 = 3,
    407   AnyAmbiguousAliases_MIN = AnyAmbiguousAliases_NONE,
    408   AnyAmbiguousAliases_MAX = AnyAmbiguousAliases_M3
    409 };
    410 
    411 inline const AnyAmbiguousAliases (&EnumValuesAnyAmbiguousAliases())[4] {
    412   static const AnyAmbiguousAliases values[] = {
    413     AnyAmbiguousAliases_NONE,
    414     AnyAmbiguousAliases_M1,
    415     AnyAmbiguousAliases_M2,
    416     AnyAmbiguousAliases_M3
    417   };
    418   return values;
    419 }
    420 
    421 inline const char * const *EnumNamesAnyAmbiguousAliases() {
    422   static const char * const names[] = {
    423     "NONE",
    424     "M1",
    425     "M2",
    426     "M3",
    427     nullptr
    428   };
    429   return names;
    430 }
    431 
    432 inline const char *EnumNameAnyAmbiguousAliases(AnyAmbiguousAliases e) {
    433   if (e < AnyAmbiguousAliases_NONE || e > AnyAmbiguousAliases_M3) return "";
    434   const size_t index = static_cast<int>(e);
    435   return EnumNamesAnyAmbiguousAliases()[index];
    436 }
    437 
    438 struct AnyAmbiguousAliasesUnion {
    439   AnyAmbiguousAliases type;
    440   void *value;
    441 
    442   AnyAmbiguousAliasesUnion() : type(AnyAmbiguousAliases_NONE), value(nullptr) {}
    443   AnyAmbiguousAliasesUnion(AnyAmbiguousAliasesUnion&& u) FLATBUFFERS_NOEXCEPT :
    444     type(AnyAmbiguousAliases_NONE), value(nullptr)
    445     { std::swap(type, u.type); std::swap(value, u.value); }
    446   AnyAmbiguousAliasesUnion(const AnyAmbiguousAliasesUnion &) FLATBUFFERS_NOEXCEPT;
    447   AnyAmbiguousAliasesUnion &operator=(const AnyAmbiguousAliasesUnion &u) FLATBUFFERS_NOEXCEPT
    448     { AnyAmbiguousAliasesUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
    449   AnyAmbiguousAliasesUnion &operator=(AnyAmbiguousAliasesUnion &&u) FLATBUFFERS_NOEXCEPT
    450     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
    451   ~AnyAmbiguousAliasesUnion() { Reset(); }
    452 
    453   void Reset();
    454 
    455   static void *UnPack(const void *obj, AnyAmbiguousAliases type, const flatbuffers::resolver_function_t *resolver);
    456   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
    457 
    458   MonsterT *AsM1() {
    459     return type == AnyAmbiguousAliases_M1 ?
    460       reinterpret_cast<MonsterT *>(value) : nullptr;
    461   }
    462   const MonsterT *AsM1() const {
    463     return type == AnyAmbiguousAliases_M1 ?
    464       reinterpret_cast<const MonsterT *>(value) : nullptr;
    465   }
    466   MonsterT *AsM2() {
    467     return type == AnyAmbiguousAliases_M2 ?
    468       reinterpret_cast<MonsterT *>(value) : nullptr;
    469   }
    470   const MonsterT *AsM2() const {
    471     return type == AnyAmbiguousAliases_M2 ?
    472       reinterpret_cast<const MonsterT *>(value) : nullptr;
    473   }
    474   MonsterT *AsM3() {
    475     return type == AnyAmbiguousAliases_M3 ?
    476       reinterpret_cast<MonsterT *>(value) : nullptr;
    477   }
    478   const MonsterT *AsM3() const {
    479     return type == AnyAmbiguousAliases_M3 ?
    480       reinterpret_cast<const MonsterT *>(value) : nullptr;
    481   }
    482 };
    483 
    484 
    485 inline bool operator==(const AnyAmbiguousAliasesUnion &lhs, const AnyAmbiguousAliasesUnion &rhs) {
    486   if (lhs.type != rhs.type) return false;
    487   switch (lhs.type) {
    488     case AnyAmbiguousAliases_NONE: {
    489       return true;
    490     }
    491     case AnyAmbiguousAliases_M1: {
    492       return *(reinterpret_cast<const MonsterT *>(lhs.value)) ==
    493              *(reinterpret_cast<const MonsterT *>(rhs.value));
    494     }
    495     case AnyAmbiguousAliases_M2: {
    496       return *(reinterpret_cast<const MonsterT *>(lhs.value)) ==
    497              *(reinterpret_cast<const MonsterT *>(rhs.value));
    498     }
    499     case AnyAmbiguousAliases_M3: {
    500       return *(reinterpret_cast<const MonsterT *>(lhs.value)) ==
    501              *(reinterpret_cast<const MonsterT *>(rhs.value));
    502     }
    503     default: {
    504       return false;
    505     }
    506   }
    507 }
    508 bool VerifyAnyAmbiguousAliases(flatbuffers::Verifier &verifier, const void *obj, AnyAmbiguousAliases type);
    509 bool VerifyAnyAmbiguousAliasesVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
    510 
    511 FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(2) Test FLATBUFFERS_FINAL_CLASS {
    512  private:
    513   int16_t a_;
    514   int8_t b_;
    515   int8_t padding0__;
    516 
    517  public:
    518   Test() {
    519     memset(static_cast<void *>(this), 0, sizeof(Test));
    520   }
    521   Test(int16_t _a, int8_t _b)
    522       : a_(flatbuffers::EndianScalar(_a)),
    523         b_(flatbuffers::EndianScalar(_b)),
    524         padding0__(0) {
    525     (void)padding0__;
    526   }
    527   int16_t a() const {
    528     return flatbuffers::EndianScalar(a_);
    529   }
    530   void mutate_a(int16_t _a) {
    531     flatbuffers::WriteScalar(&a_, _a);
    532   }
    533   int8_t b() const {
    534     return flatbuffers::EndianScalar(b_);
    535   }
    536   void mutate_b(int8_t _b) {
    537     flatbuffers::WriteScalar(&b_, _b);
    538   }
    539 };
    540 FLATBUFFERS_STRUCT_END(Test, 4);
    541 
    542 inline bool operator==(const Test &lhs, const Test &rhs) {
    543   return
    544       (lhs.a() == rhs.a()) &&
    545       (lhs.b() == rhs.b());
    546 }
    547 
    548 FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(8) Vec3 FLATBUFFERS_FINAL_CLASS {
    549  private:
    550   float x_;
    551   float y_;
    552   float z_;
    553   int32_t padding0__;
    554   double test1_;
    555   int8_t test2_;
    556   int8_t padding1__;
    557   Test test3_;
    558   int16_t padding2__;
    559 
    560  public:
    561   Vec3() {
    562     memset(static_cast<void *>(this), 0, sizeof(Vec3));
    563   }
    564   Vec3(float _x, float _y, float _z, double _test1, Color _test2, const Test &_test3)
    565       : x_(flatbuffers::EndianScalar(_x)),
    566         y_(flatbuffers::EndianScalar(_y)),
    567         z_(flatbuffers::EndianScalar(_z)),
    568         padding0__(0),
    569         test1_(flatbuffers::EndianScalar(_test1)),
    570         test2_(flatbuffers::EndianScalar(static_cast<int8_t>(_test2))),
    571         padding1__(0),
    572         test3_(_test3),
    573         padding2__(0) {
    574     (void)padding0__;
    575     (void)padding1__;
    576     (void)padding2__;
    577   }
    578   float x() const {
    579     return flatbuffers::EndianScalar(x_);
    580   }
    581   void mutate_x(float _x) {
    582     flatbuffers::WriteScalar(&x_, _x);
    583   }
    584   float y() const {
    585     return flatbuffers::EndianScalar(y_);
    586   }
    587   void mutate_y(float _y) {
    588     flatbuffers::WriteScalar(&y_, _y);
    589   }
    590   float z() const {
    591     return flatbuffers::EndianScalar(z_);
    592   }
    593   void mutate_z(float _z) {
    594     flatbuffers::WriteScalar(&z_, _z);
    595   }
    596   double test1() const {
    597     return flatbuffers::EndianScalar(test1_);
    598   }
    599   void mutate_test1(double _test1) {
    600     flatbuffers::WriteScalar(&test1_, _test1);
    601   }
    602   Color test2() const {
    603     return static_cast<Color>(flatbuffers::EndianScalar(test2_));
    604   }
    605   void mutate_test2(Color _test2) {
    606     flatbuffers::WriteScalar(&test2_, static_cast<int8_t>(_test2));
    607   }
    608   const Test &test3() const {
    609     return test3_;
    610   }
    611   Test &mutable_test3() {
    612     return test3_;
    613   }
    614 };
    615 FLATBUFFERS_STRUCT_END(Vec3, 32);
    616 
    617 inline bool operator==(const Vec3 &lhs, const Vec3 &rhs) {
    618   return
    619       (lhs.x() == rhs.x()) &&
    620       (lhs.y() == rhs.y()) &&
    621       (lhs.z() == rhs.z()) &&
    622       (lhs.test1() == rhs.test1()) &&
    623       (lhs.test2() == rhs.test2()) &&
    624       (lhs.test3() == rhs.test3());
    625 }
    626 
    627 FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Ability FLATBUFFERS_FINAL_CLASS {
    628  private:
    629   uint32_t id_;
    630   uint32_t distance_;
    631 
    632  public:
    633   Ability() {
    634     memset(static_cast<void *>(this), 0, sizeof(Ability));
    635   }
    636   Ability(uint32_t _id, uint32_t _distance)
    637       : id_(flatbuffers::EndianScalar(_id)),
    638         distance_(flatbuffers::EndianScalar(_distance)) {
    639   }
    640   uint32_t id() const {
    641     return flatbuffers::EndianScalar(id_);
    642   }
    643   void mutate_id(uint32_t _id) {
    644     flatbuffers::WriteScalar(&id_, _id);
    645   }
    646   bool KeyCompareLessThan(const Ability *o) const {
    647     return id() < o->id();
    648   }
    649   int KeyCompareWithValue(uint32_t val) const {
    650     return static_cast<int>(id() > val) - static_cast<int>(id() < val);
    651   }
    652   uint32_t distance() const {
    653     return flatbuffers::EndianScalar(distance_);
    654   }
    655   void mutate_distance(uint32_t _distance) {
    656     flatbuffers::WriteScalar(&distance_, _distance);
    657   }
    658 };
    659 FLATBUFFERS_STRUCT_END(Ability, 8);
    660 
    661 inline bool operator==(const Ability &lhs, const Ability &rhs) {
    662   return
    663       (lhs.id() == rhs.id()) &&
    664       (lhs.distance() == rhs.distance());
    665 }
    666 
    667 }  // namespace Example
    668 
    669 struct InParentNamespaceT : public flatbuffers::NativeTable {
    670   typedef InParentNamespace TableType;
    671   InParentNamespaceT() {
    672   }
    673 };
    674 
    675 inline bool operator==(const InParentNamespaceT &, const InParentNamespaceT &) {
    676   return true;
    677 }
    678 
    679 struct InParentNamespace FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
    680   typedef InParentNamespaceT NativeTableType;
    681   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
    682     return InParentNamespaceTypeTable();
    683   }
    684   bool Verify(flatbuffers::Verifier &verifier) const {
    685     return VerifyTableStart(verifier) &&
    686            verifier.EndTable();
    687   }
    688   InParentNamespaceT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    689   void UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    690   static flatbuffers::Offset<InParentNamespace> Pack(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    691 };
    692 
    693 struct InParentNamespaceBuilder {
    694   flatbuffers::FlatBufferBuilder &fbb_;
    695   flatbuffers::uoffset_t start_;
    696   explicit InParentNamespaceBuilder(flatbuffers::FlatBufferBuilder &_fbb)
    697         : fbb_(_fbb) {
    698     start_ = fbb_.StartTable();
    699   }
    700   InParentNamespaceBuilder &operator=(const InParentNamespaceBuilder &);
    701   flatbuffers::Offset<InParentNamespace> Finish() {
    702     const auto end = fbb_.EndTable(start_);
    703     auto o = flatbuffers::Offset<InParentNamespace>(end);
    704     return o;
    705   }
    706 };
    707 
    708 inline flatbuffers::Offset<InParentNamespace> CreateInParentNamespace(
    709     flatbuffers::FlatBufferBuilder &_fbb) {
    710   InParentNamespaceBuilder builder_(_fbb);
    711   return builder_.Finish();
    712 }
    713 
    714 flatbuffers::Offset<InParentNamespace> CreateInParentNamespace(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    715 
    716 namespace Example2 {
    717 
    718 struct MonsterT : public flatbuffers::NativeTable {
    719   typedef Monster TableType;
    720   MonsterT() {
    721   }
    722 };
    723 
    724 inline bool operator==(const MonsterT &, const MonsterT &) {
    725   return true;
    726 }
    727 
    728 struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
    729   typedef MonsterT NativeTableType;
    730   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
    731     return MonsterTypeTable();
    732   }
    733   bool Verify(flatbuffers::Verifier &verifier) const {
    734     return VerifyTableStart(verifier) &&
    735            verifier.EndTable();
    736   }
    737   MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    738   void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    739   static flatbuffers::Offset<Monster> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    740 };
    741 
    742 struct MonsterBuilder {
    743   flatbuffers::FlatBufferBuilder &fbb_;
    744   flatbuffers::uoffset_t start_;
    745   explicit MonsterBuilder(flatbuffers::FlatBufferBuilder &_fbb)
    746         : fbb_(_fbb) {
    747     start_ = fbb_.StartTable();
    748   }
    749   MonsterBuilder &operator=(const MonsterBuilder &);
    750   flatbuffers::Offset<Monster> Finish() {
    751     const auto end = fbb_.EndTable(start_);
    752     auto o = flatbuffers::Offset<Monster>(end);
    753     return o;
    754   }
    755 };
    756 
    757 inline flatbuffers::Offset<Monster> CreateMonster(
    758     flatbuffers::FlatBufferBuilder &_fbb) {
    759   MonsterBuilder builder_(_fbb);
    760   return builder_.Finish();
    761 }
    762 
    763 flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    764 
    765 }  // namespace Example2
    766 
    767 namespace Example {
    768 
    769 struct TestSimpleTableWithEnumT : public flatbuffers::NativeTable {
    770   typedef TestSimpleTableWithEnum TableType;
    771   Color color;
    772   TestSimpleTableWithEnumT()
    773       : color(Color_Green) {
    774   }
    775 };
    776 
    777 inline bool operator==(const TestSimpleTableWithEnumT &lhs, const TestSimpleTableWithEnumT &rhs) {
    778   return
    779       (lhs.color == rhs.color);
    780 }
    781 
    782 struct TestSimpleTableWithEnum FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
    783   typedef TestSimpleTableWithEnumT NativeTableType;
    784   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
    785     return TestSimpleTableWithEnumTypeTable();
    786   }
    787   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
    788     VT_COLOR = 4
    789   };
    790   Color color() const {
    791     return static_cast<Color>(GetField<int8_t>(VT_COLOR, 2));
    792   }
    793   bool mutate_color(Color _color) {
    794     return SetField<int8_t>(VT_COLOR, static_cast<int8_t>(_color), 2);
    795   }
    796   bool Verify(flatbuffers::Verifier &verifier) const {
    797     return VerifyTableStart(verifier) &&
    798            VerifyField<int8_t>(verifier, VT_COLOR) &&
    799            verifier.EndTable();
    800   }
    801   TestSimpleTableWithEnumT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    802   void UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    803   static flatbuffers::Offset<TestSimpleTableWithEnum> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TestSimpleTableWithEnumT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    804 };
    805 
    806 struct TestSimpleTableWithEnumBuilder {
    807   flatbuffers::FlatBufferBuilder &fbb_;
    808   flatbuffers::uoffset_t start_;
    809   void add_color(Color color) {
    810     fbb_.AddElement<int8_t>(TestSimpleTableWithEnum::VT_COLOR, static_cast<int8_t>(color), 2);
    811   }
    812   explicit TestSimpleTableWithEnumBuilder(flatbuffers::FlatBufferBuilder &_fbb)
    813         : fbb_(_fbb) {
    814     start_ = fbb_.StartTable();
    815   }
    816   TestSimpleTableWithEnumBuilder &operator=(const TestSimpleTableWithEnumBuilder &);
    817   flatbuffers::Offset<TestSimpleTableWithEnum> Finish() {
    818     const auto end = fbb_.EndTable(start_);
    819     auto o = flatbuffers::Offset<TestSimpleTableWithEnum>(end);
    820     return o;
    821   }
    822 };
    823 
    824 inline flatbuffers::Offset<TestSimpleTableWithEnum> CreateTestSimpleTableWithEnum(
    825     flatbuffers::FlatBufferBuilder &_fbb,
    826     Color color = Color_Green) {
    827   TestSimpleTableWithEnumBuilder builder_(_fbb);
    828   builder_.add_color(color);
    829   return builder_.Finish();
    830 }
    831 
    832 flatbuffers::Offset<TestSimpleTableWithEnum> CreateTestSimpleTableWithEnum(flatbuffers::FlatBufferBuilder &_fbb, const TestSimpleTableWithEnumT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    833 
    834 struct StatT : public flatbuffers::NativeTable {
    835   typedef Stat TableType;
    836   std::string id;
    837   int64_t val;
    838   uint16_t count;
    839   StatT()
    840       : val(0),
    841         count(0) {
    842   }
    843 };
    844 
    845 inline bool operator==(const StatT &lhs, const StatT &rhs) {
    846   return
    847       (lhs.id == rhs.id) &&
    848       (lhs.val == rhs.val) &&
    849       (lhs.count == rhs.count);
    850 }
    851 
    852 struct Stat FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
    853   typedef StatT NativeTableType;
    854   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
    855     return StatTypeTable();
    856   }
    857   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
    858     VT_ID = 4,
    859     VT_VAL = 6,
    860     VT_COUNT = 8
    861   };
    862   const flatbuffers::String *id() const {
    863     return GetPointer<const flatbuffers::String *>(VT_ID);
    864   }
    865   flatbuffers::String *mutable_id() {
    866     return GetPointer<flatbuffers::String *>(VT_ID);
    867   }
    868   int64_t val() const {
    869     return GetField<int64_t>(VT_VAL, 0);
    870   }
    871   bool mutate_val(int64_t _val) {
    872     return SetField<int64_t>(VT_VAL, _val, 0);
    873   }
    874   uint16_t count() const {
    875     return GetField<uint16_t>(VT_COUNT, 0);
    876   }
    877   bool mutate_count(uint16_t _count) {
    878     return SetField<uint16_t>(VT_COUNT, _count, 0);
    879   }
    880   bool Verify(flatbuffers::Verifier &verifier) const {
    881     return VerifyTableStart(verifier) &&
    882            VerifyOffset(verifier, VT_ID) &&
    883            verifier.VerifyString(id()) &&
    884            VerifyField<int64_t>(verifier, VT_VAL) &&
    885            VerifyField<uint16_t>(verifier, VT_COUNT) &&
    886            verifier.EndTable();
    887   }
    888   StatT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    889   void UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    890   static flatbuffers::Offset<Stat> Pack(flatbuffers::FlatBufferBuilder &_fbb, const StatT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    891 };
    892 
    893 struct StatBuilder {
    894   flatbuffers::FlatBufferBuilder &fbb_;
    895   flatbuffers::uoffset_t start_;
    896   void add_id(flatbuffers::Offset<flatbuffers::String> id) {
    897     fbb_.AddOffset(Stat::VT_ID, id);
    898   }
    899   void add_val(int64_t val) {
    900     fbb_.AddElement<int64_t>(Stat::VT_VAL, val, 0);
    901   }
    902   void add_count(uint16_t count) {
    903     fbb_.AddElement<uint16_t>(Stat::VT_COUNT, count, 0);
    904   }
    905   explicit StatBuilder(flatbuffers::FlatBufferBuilder &_fbb)
    906         : fbb_(_fbb) {
    907     start_ = fbb_.StartTable();
    908   }
    909   StatBuilder &operator=(const StatBuilder &);
    910   flatbuffers::Offset<Stat> Finish() {
    911     const auto end = fbb_.EndTable(start_);
    912     auto o = flatbuffers::Offset<Stat>(end);
    913     return o;
    914   }
    915 };
    916 
    917 inline flatbuffers::Offset<Stat> CreateStat(
    918     flatbuffers::FlatBufferBuilder &_fbb,
    919     flatbuffers::Offset<flatbuffers::String> id = 0,
    920     int64_t val = 0,
    921     uint16_t count = 0) {
    922   StatBuilder builder_(_fbb);
    923   builder_.add_val(val);
    924   builder_.add_id(id);
    925   builder_.add_count(count);
    926   return builder_.Finish();
    927 }
    928 
    929 inline flatbuffers::Offset<Stat> CreateStatDirect(
    930     flatbuffers::FlatBufferBuilder &_fbb,
    931     const char *id = nullptr,
    932     int64_t val = 0,
    933     uint16_t count = 0) {
    934   auto id__ = id ? _fbb.CreateString(id) : 0;
    935   return MyGame::Example::CreateStat(
    936       _fbb,
    937       id__,
    938       val,
    939       count);
    940 }
    941 
    942 flatbuffers::Offset<Stat> CreateStat(flatbuffers::FlatBufferBuilder &_fbb, const StatT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    943 
    944 struct ReferrableT : public flatbuffers::NativeTable {
    945   typedef Referrable TableType;
    946   uint64_t id;
    947   ReferrableT()
    948       : id(0) {
    949   }
    950 };
    951 
    952 inline bool operator==(const ReferrableT &lhs, const ReferrableT &rhs) {
    953   return
    954       (lhs.id == rhs.id);
    955 }
    956 
    957 struct Referrable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
    958   typedef ReferrableT NativeTableType;
    959   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
    960     return ReferrableTypeTable();
    961   }
    962   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
    963     VT_ID = 4
    964   };
    965   uint64_t id() const {
    966     return GetField<uint64_t>(VT_ID, 0);
    967   }
    968   bool mutate_id(uint64_t _id) {
    969     return SetField<uint64_t>(VT_ID, _id, 0);
    970   }
    971   bool KeyCompareLessThan(const Referrable *o) const {
    972     return id() < o->id();
    973   }
    974   int KeyCompareWithValue(uint64_t val) const {
    975     return static_cast<int>(id() > val) - static_cast<int>(id() < val);
    976   }
    977   bool Verify(flatbuffers::Verifier &verifier) const {
    978     return VerifyTableStart(verifier) &&
    979            VerifyField<uint64_t>(verifier, VT_ID) &&
    980            verifier.EndTable();
    981   }
    982   ReferrableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    983   void UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    984   static flatbuffers::Offset<Referrable> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReferrableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    985 };
    986 
    987 struct ReferrableBuilder {
    988   flatbuffers::FlatBufferBuilder &fbb_;
    989   flatbuffers::uoffset_t start_;
    990   void add_id(uint64_t id) {
    991     fbb_.AddElement<uint64_t>(Referrable::VT_ID, id, 0);
    992   }
    993   explicit ReferrableBuilder(flatbuffers::FlatBufferBuilder &_fbb)
    994         : fbb_(_fbb) {
    995     start_ = fbb_.StartTable();
    996   }
    997   ReferrableBuilder &operator=(const ReferrableBuilder &);
    998   flatbuffers::Offset<Referrable> Finish() {
    999     const auto end = fbb_.EndTable(start_);
   1000     auto o = flatbuffers::Offset<Referrable>(end);
   1001     return o;
   1002   }
   1003 };
   1004 
   1005 inline flatbuffers::Offset<Referrable> CreateReferrable(
   1006     flatbuffers::FlatBufferBuilder &_fbb,
   1007     uint64_t id = 0) {
   1008   ReferrableBuilder builder_(_fbb);
   1009   builder_.add_id(id);
   1010   return builder_.Finish();
   1011 }
   1012 
   1013 flatbuffers::Offset<Referrable> CreateReferrable(flatbuffers::FlatBufferBuilder &_fbb, const ReferrableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1014 
   1015 struct MonsterT : public flatbuffers::NativeTable {
   1016   typedef Monster TableType;
   1017   flatbuffers::unique_ptr<Vec3> pos;
   1018   int16_t mana;
   1019   int16_t hp;
   1020   std::string name;
   1021   std::vector<uint8_t> inventory;
   1022   Color color;
   1023   AnyUnion test;
   1024   std::vector<Test> test4;
   1025   std::vector<std::string> testarrayofstring;
   1026   std::vector<flatbuffers::unique_ptr<MonsterT>> testarrayoftables;
   1027   flatbuffers::unique_ptr<MonsterT> enemy;
   1028   std::vector<uint8_t> testnestedflatbuffer;
   1029   flatbuffers::unique_ptr<StatT> testempty;
   1030   bool testbool;
   1031   int32_t testhashs32_fnv1;
   1032   uint32_t testhashu32_fnv1;
   1033   int64_t testhashs64_fnv1;
   1034   uint64_t testhashu64_fnv1;
   1035   int32_t testhashs32_fnv1a;
   1036   Stat *testhashu32_fnv1a;
   1037   int64_t testhashs64_fnv1a;
   1038   uint64_t testhashu64_fnv1a;
   1039   std::vector<bool> testarrayofbools;
   1040   float testf;
   1041   float testf2;
   1042   float testf3;
   1043   std::vector<std::string> testarrayofstring2;
   1044   std::vector<Ability> testarrayofsortedstruct;
   1045   std::vector<uint8_t> flex;
   1046   std::vector<Test> test5;
   1047   std::vector<int64_t> vector_of_longs;
   1048   std::vector<double> vector_of_doubles;
   1049   flatbuffers::unique_ptr<MyGame::InParentNamespaceT> parent_namespace_test;
   1050   std::vector<flatbuffers::unique_ptr<ReferrableT>> vector_of_referrables;
   1051   ReferrableT *single_weak_reference;
   1052   std::vector<ReferrableT *> vector_of_weak_references;
   1053   std::vector<flatbuffers::unique_ptr<ReferrableT>> vector_of_strong_referrables;
   1054   ReferrableT *co_owning_reference;
   1055   std::vector<flatbuffers::unique_ptr<ReferrableT>> vector_of_co_owning_references;
   1056   ReferrableT *non_owning_reference;
   1057   std::vector<ReferrableT *> vector_of_non_owning_references;
   1058   AnyUniqueAliasesUnion any_unique;
   1059   AnyAmbiguousAliasesUnion any_ambiguous;
   1060   std::vector<Color> vector_of_enums;
   1061   MonsterT()
   1062       : mana(150),
   1063         hp(100),
   1064         color(Color_Blue),
   1065         testbool(false),
   1066         testhashs32_fnv1(0),
   1067         testhashu32_fnv1(0),
   1068         testhashs64_fnv1(0),
   1069         testhashu64_fnv1(0),
   1070         testhashs32_fnv1a(0),
   1071         testhashu32_fnv1a(nullptr),
   1072         testhashs64_fnv1a(0),
   1073         testhashu64_fnv1a(0),
   1074         testf(3.14159f),
   1075         testf2(3.0f),
   1076         testf3(0.0f),
   1077         single_weak_reference(nullptr),
   1078         co_owning_reference(nullptr),
   1079         non_owning_reference(nullptr) {
   1080   }
   1081 };
   1082 
   1083 inline bool operator==(const MonsterT &lhs, const MonsterT &rhs) {
   1084   return
   1085       (lhs.pos == rhs.pos) &&
   1086       (lhs.mana == rhs.mana) &&
   1087       (lhs.hp == rhs.hp) &&
   1088       (lhs.name == rhs.name) &&
   1089       (lhs.inventory == rhs.inventory) &&
   1090       (lhs.color == rhs.color) &&
   1091       (lhs.test == rhs.test) &&
   1092       (lhs.test4 == rhs.test4) &&
   1093       (lhs.testarrayofstring == rhs.testarrayofstring) &&
   1094       (lhs.testarrayoftables == rhs.testarrayoftables) &&
   1095       (lhs.enemy == rhs.enemy) &&
   1096       (lhs.testnestedflatbuffer == rhs.testnestedflatbuffer) &&
   1097       (lhs.testempty == rhs.testempty) &&
   1098       (lhs.testbool == rhs.testbool) &&
   1099       (lhs.testhashs32_fnv1 == rhs.testhashs32_fnv1) &&
   1100       (lhs.testhashu32_fnv1 == rhs.testhashu32_fnv1) &&
   1101       (lhs.testhashs64_fnv1 == rhs.testhashs64_fnv1) &&
   1102       (lhs.testhashu64_fnv1 == rhs.testhashu64_fnv1) &&
   1103       (lhs.testhashs32_fnv1a == rhs.testhashs32_fnv1a) &&
   1104       (lhs.testhashu32_fnv1a == rhs.testhashu32_fnv1a) &&
   1105       (lhs.testhashs64_fnv1a == rhs.testhashs64_fnv1a) &&
   1106       (lhs.testhashu64_fnv1a == rhs.testhashu64_fnv1a) &&
   1107       (lhs.testarrayofbools == rhs.testarrayofbools) &&
   1108       (lhs.testf == rhs.testf) &&
   1109       (lhs.testf2 == rhs.testf2) &&
   1110       (lhs.testf3 == rhs.testf3) &&
   1111       (lhs.testarrayofstring2 == rhs.testarrayofstring2) &&
   1112       (lhs.testarrayofsortedstruct == rhs.testarrayofsortedstruct) &&
   1113       (lhs.flex == rhs.flex) &&
   1114       (lhs.test5 == rhs.test5) &&
   1115       (lhs.vector_of_longs == rhs.vector_of_longs) &&
   1116       (lhs.vector_of_doubles == rhs.vector_of_doubles) &&
   1117       (lhs.parent_namespace_test == rhs.parent_namespace_test) &&
   1118       (lhs.vector_of_referrables == rhs.vector_of_referrables) &&
   1119       (lhs.single_weak_reference == rhs.single_weak_reference) &&
   1120       (lhs.vector_of_weak_references == rhs.vector_of_weak_references) &&
   1121       (lhs.vector_of_strong_referrables == rhs.vector_of_strong_referrables) &&
   1122       (lhs.co_owning_reference == rhs.co_owning_reference) &&
   1123       (lhs.vector_of_co_owning_references == rhs.vector_of_co_owning_references) &&
   1124       (lhs.non_owning_reference == rhs.non_owning_reference) &&
   1125       (lhs.vector_of_non_owning_references == rhs.vector_of_non_owning_references) &&
   1126       (lhs.any_unique == rhs.any_unique) &&
   1127       (lhs.any_ambiguous == rhs.any_ambiguous) &&
   1128       (lhs.vector_of_enums == rhs.vector_of_enums);
   1129 }
   1130 
   1131 /// an example documentation comment: monster object
   1132 struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
   1133   typedef MonsterT NativeTableType;
   1134   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
   1135     return MonsterTypeTable();
   1136   }
   1137   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
   1138     VT_POS = 4,
   1139     VT_MANA = 6,
   1140     VT_HP = 8,
   1141     VT_NAME = 10,
   1142     VT_INVENTORY = 14,
   1143     VT_COLOR = 16,
   1144     VT_TEST_TYPE = 18,
   1145     VT_TEST = 20,
   1146     VT_TEST4 = 22,
   1147     VT_TESTARRAYOFSTRING = 24,
   1148     VT_TESTARRAYOFTABLES = 26,
   1149     VT_ENEMY = 28,
   1150     VT_TESTNESTEDFLATBUFFER = 30,
   1151     VT_TESTEMPTY = 32,
   1152     VT_TESTBOOL = 34,
   1153     VT_TESTHASHS32_FNV1 = 36,
   1154     VT_TESTHASHU32_FNV1 = 38,
   1155     VT_TESTHASHS64_FNV1 = 40,
   1156     VT_TESTHASHU64_FNV1 = 42,
   1157     VT_TESTHASHS32_FNV1A = 44,
   1158     VT_TESTHASHU32_FNV1A = 46,
   1159     VT_TESTHASHS64_FNV1A = 48,
   1160     VT_TESTHASHU64_FNV1A = 50,
   1161     VT_TESTARRAYOFBOOLS = 52,
   1162     VT_TESTF = 54,
   1163     VT_TESTF2 = 56,
   1164     VT_TESTF3 = 58,
   1165     VT_TESTARRAYOFSTRING2 = 60,
   1166     VT_TESTARRAYOFSORTEDSTRUCT = 62,
   1167     VT_FLEX = 64,
   1168     VT_TEST5 = 66,
   1169     VT_VECTOR_OF_LONGS = 68,
   1170     VT_VECTOR_OF_DOUBLES = 70,
   1171     VT_PARENT_NAMESPACE_TEST = 72,
   1172     VT_VECTOR_OF_REFERRABLES = 74,
   1173     VT_SINGLE_WEAK_REFERENCE = 76,
   1174     VT_VECTOR_OF_WEAK_REFERENCES = 78,
   1175     VT_VECTOR_OF_STRONG_REFERRABLES = 80,
   1176     VT_CO_OWNING_REFERENCE = 82,
   1177     VT_VECTOR_OF_CO_OWNING_REFERENCES = 84,
   1178     VT_NON_OWNING_REFERENCE = 86,
   1179     VT_VECTOR_OF_NON_OWNING_REFERENCES = 88,
   1180     VT_ANY_UNIQUE_TYPE = 90,
   1181     VT_ANY_UNIQUE = 92,
   1182     VT_ANY_AMBIGUOUS_TYPE = 94,
   1183     VT_ANY_AMBIGUOUS = 96,
   1184     VT_VECTOR_OF_ENUMS = 98
   1185   };
   1186   const Vec3 *pos() const {
   1187     return GetStruct<const Vec3 *>(VT_POS);
   1188   }
   1189   Vec3 *mutable_pos() {
   1190     return GetStruct<Vec3 *>(VT_POS);
   1191   }
   1192   int16_t mana() const {
   1193     return GetField<int16_t>(VT_MANA, 150);
   1194   }
   1195   bool mutate_mana(int16_t _mana) {
   1196     return SetField<int16_t>(VT_MANA, _mana, 150);
   1197   }
   1198   int16_t hp() const {
   1199     return GetField<int16_t>(VT_HP, 100);
   1200   }
   1201   bool mutate_hp(int16_t _hp) {
   1202     return SetField<int16_t>(VT_HP, _hp, 100);
   1203   }
   1204   const flatbuffers::String *name() const {
   1205     return GetPointer<const flatbuffers::String *>(VT_NAME);
   1206   }
   1207   flatbuffers::String *mutable_name() {
   1208     return GetPointer<flatbuffers::String *>(VT_NAME);
   1209   }
   1210   bool KeyCompareLessThan(const Monster *o) const {
   1211     return *name() < *o->name();
   1212   }
   1213   int KeyCompareWithValue(const char *val) const {
   1214     return strcmp(name()->c_str(), val);
   1215   }
   1216   const flatbuffers::Vector<uint8_t> *inventory() const {
   1217     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_INVENTORY);
   1218   }
   1219   flatbuffers::Vector<uint8_t> *mutable_inventory() {
   1220     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_INVENTORY);
   1221   }
   1222   Color color() const {
   1223     return static_cast<Color>(GetField<int8_t>(VT_COLOR, 8));
   1224   }
   1225   bool mutate_color(Color _color) {
   1226     return SetField<int8_t>(VT_COLOR, static_cast<int8_t>(_color), 8);
   1227   }
   1228   Any test_type() const {
   1229     return static_cast<Any>(GetField<uint8_t>(VT_TEST_TYPE, 0));
   1230   }
   1231   bool mutate_test_type(Any _test_type) {
   1232     return SetField<uint8_t>(VT_TEST_TYPE, static_cast<uint8_t>(_test_type), 0);
   1233   }
   1234   const void *test() const {
   1235     return GetPointer<const void *>(VT_TEST);
   1236   }
   1237   template<typename T> const T *test_as() const;
   1238   const Monster *test_as_Monster() const {
   1239     return test_type() == Any_Monster ? static_cast<const Monster *>(test()) : nullptr;
   1240   }
   1241   const TestSimpleTableWithEnum *test_as_TestSimpleTableWithEnum() const {
   1242     return test_type() == Any_TestSimpleTableWithEnum ? static_cast<const TestSimpleTableWithEnum *>(test()) : nullptr;
   1243   }
   1244   const MyGame::Example2::Monster *test_as_MyGame_Example2_Monster() const {
   1245     return test_type() == Any_MyGame_Example2_Monster ? static_cast<const MyGame::Example2::Monster *>(test()) : nullptr;
   1246   }
   1247   void *mutable_test() {
   1248     return GetPointer<void *>(VT_TEST);
   1249   }
   1250   const flatbuffers::Vector<const Test *> *test4() const {
   1251     return GetPointer<const flatbuffers::Vector<const Test *> *>(VT_TEST4);
   1252   }
   1253   flatbuffers::Vector<const Test *> *mutable_test4() {
   1254     return GetPointer<flatbuffers::Vector<const Test *> *>(VT_TEST4);
   1255   }
   1256   const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *testarrayofstring() const {
   1257     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_TESTARRAYOFSTRING);
   1258   }
   1259   flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *mutable_testarrayofstring() {
   1260     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_TESTARRAYOFSTRING);
   1261   }
   1262   /// an example documentation comment: this will end up in the generated code
   1263   /// multiline too
   1264   const flatbuffers::Vector<flatbuffers::Offset<Monster>> *testarrayoftables() const {
   1265     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Monster>> *>(VT_TESTARRAYOFTABLES);
   1266   }
   1267   flatbuffers::Vector<flatbuffers::Offset<Monster>> *mutable_testarrayoftables() {
   1268     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<Monster>> *>(VT_TESTARRAYOFTABLES);
   1269   }
   1270   const Monster *enemy() const {
   1271     return GetPointer<const Monster *>(VT_ENEMY);
   1272   }
   1273   Monster *mutable_enemy() {
   1274     return GetPointer<Monster *>(VT_ENEMY);
   1275   }
   1276   const flatbuffers::Vector<uint8_t> *testnestedflatbuffer() const {
   1277     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_TESTNESTEDFLATBUFFER);
   1278   }
   1279   flatbuffers::Vector<uint8_t> *mutable_testnestedflatbuffer() {
   1280     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_TESTNESTEDFLATBUFFER);
   1281   }
   1282   const MyGame::Example::Monster *testnestedflatbuffer_nested_root() const {
   1283     return flatbuffers::GetRoot<MyGame::Example::Monster>(testnestedflatbuffer()->Data());
   1284   }
   1285   const Stat *testempty() const {
   1286     return GetPointer<const Stat *>(VT_TESTEMPTY);
   1287   }
   1288   Stat *mutable_testempty() {
   1289     return GetPointer<Stat *>(VT_TESTEMPTY);
   1290   }
   1291   bool testbool() const {
   1292     return GetField<uint8_t>(VT_TESTBOOL, 0) != 0;
   1293   }
   1294   bool mutate_testbool(bool _testbool) {
   1295     return SetField<uint8_t>(VT_TESTBOOL, static_cast<uint8_t>(_testbool), 0);
   1296   }
   1297   int32_t testhashs32_fnv1() const {
   1298     return GetField<int32_t>(VT_TESTHASHS32_FNV1, 0);
   1299   }
   1300   bool mutate_testhashs32_fnv1(int32_t _testhashs32_fnv1) {
   1301     return SetField<int32_t>(VT_TESTHASHS32_FNV1, _testhashs32_fnv1, 0);
   1302   }
   1303   uint32_t testhashu32_fnv1() const {
   1304     return GetField<uint32_t>(VT_TESTHASHU32_FNV1, 0);
   1305   }
   1306   bool mutate_testhashu32_fnv1(uint32_t _testhashu32_fnv1) {
   1307     return SetField<uint32_t>(VT_TESTHASHU32_FNV1, _testhashu32_fnv1, 0);
   1308   }
   1309   int64_t testhashs64_fnv1() const {
   1310     return GetField<int64_t>(VT_TESTHASHS64_FNV1, 0);
   1311   }
   1312   bool mutate_testhashs64_fnv1(int64_t _testhashs64_fnv1) {
   1313     return SetField<int64_t>(VT_TESTHASHS64_FNV1, _testhashs64_fnv1, 0);
   1314   }
   1315   uint64_t testhashu64_fnv1() const {
   1316     return GetField<uint64_t>(VT_TESTHASHU64_FNV1, 0);
   1317   }
   1318   bool mutate_testhashu64_fnv1(uint64_t _testhashu64_fnv1) {
   1319     return SetField<uint64_t>(VT_TESTHASHU64_FNV1, _testhashu64_fnv1, 0);
   1320   }
   1321   int32_t testhashs32_fnv1a() const {
   1322     return GetField<int32_t>(VT_TESTHASHS32_FNV1A, 0);
   1323   }
   1324   bool mutate_testhashs32_fnv1a(int32_t _testhashs32_fnv1a) {
   1325     return SetField<int32_t>(VT_TESTHASHS32_FNV1A, _testhashs32_fnv1a, 0);
   1326   }
   1327   uint32_t testhashu32_fnv1a() const {
   1328     return GetField<uint32_t>(VT_TESTHASHU32_FNV1A, 0);
   1329   }
   1330   bool mutate_testhashu32_fnv1a(uint32_t _testhashu32_fnv1a) {
   1331     return SetField<uint32_t>(VT_TESTHASHU32_FNV1A, _testhashu32_fnv1a, 0);
   1332   }
   1333   int64_t testhashs64_fnv1a() const {
   1334     return GetField<int64_t>(VT_TESTHASHS64_FNV1A, 0);
   1335   }
   1336   bool mutate_testhashs64_fnv1a(int64_t _testhashs64_fnv1a) {
   1337     return SetField<int64_t>(VT_TESTHASHS64_FNV1A, _testhashs64_fnv1a, 0);
   1338   }
   1339   uint64_t testhashu64_fnv1a() const {
   1340     return GetField<uint64_t>(VT_TESTHASHU64_FNV1A, 0);
   1341   }
   1342   bool mutate_testhashu64_fnv1a(uint64_t _testhashu64_fnv1a) {
   1343     return SetField<uint64_t>(VT_TESTHASHU64_FNV1A, _testhashu64_fnv1a, 0);
   1344   }
   1345   const flatbuffers::Vector<uint8_t> *testarrayofbools() const {
   1346     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_TESTARRAYOFBOOLS);
   1347   }
   1348   flatbuffers::Vector<uint8_t> *mutable_testarrayofbools() {
   1349     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_TESTARRAYOFBOOLS);
   1350   }
   1351   float testf() const {
   1352     return GetField<float>(VT_TESTF, 3.14159f);
   1353   }
   1354   bool mutate_testf(float _testf) {
   1355     return SetField<float>(VT_TESTF, _testf, 3.14159f);
   1356   }
   1357   float testf2() const {
   1358     return GetField<float>(VT_TESTF2, 3.0f);
   1359   }
   1360   bool mutate_testf2(float _testf2) {
   1361     return SetField<float>(VT_TESTF2, _testf2, 3.0f);
   1362   }
   1363   float testf3() const {
   1364     return GetField<float>(VT_TESTF3, 0.0f);
   1365   }
   1366   bool mutate_testf3(float _testf3) {
   1367     return SetField<float>(VT_TESTF3, _testf3, 0.0f);
   1368   }
   1369   const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *testarrayofstring2() const {
   1370     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_TESTARRAYOFSTRING2);
   1371   }
   1372   flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *mutable_testarrayofstring2() {
   1373     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_TESTARRAYOFSTRING2);
   1374   }
   1375   const flatbuffers::Vector<const Ability *> *testarrayofsortedstruct() const {
   1376     return GetPointer<const flatbuffers::Vector<const Ability *> *>(VT_TESTARRAYOFSORTEDSTRUCT);
   1377   }
   1378   flatbuffers::Vector<const Ability *> *mutable_testarrayofsortedstruct() {
   1379     return GetPointer<flatbuffers::Vector<const Ability *> *>(VT_TESTARRAYOFSORTEDSTRUCT);
   1380   }
   1381   const flatbuffers::Vector<uint8_t> *flex() const {
   1382     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_FLEX);
   1383   }
   1384   flatbuffers::Vector<uint8_t> *mutable_flex() {
   1385     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_FLEX);
   1386   }
   1387   flexbuffers::Reference flex_flexbuffer_root() const {
   1388     return flexbuffers::GetRoot(flex()->Data(), flex()->size());
   1389   }
   1390   const flatbuffers::Vector<const Test *> *test5() const {
   1391     return GetPointer<const flatbuffers::Vector<const Test *> *>(VT_TEST5);
   1392   }
   1393   flatbuffers::Vector<const Test *> *mutable_test5() {
   1394     return GetPointer<flatbuffers::Vector<const Test *> *>(VT_TEST5);
   1395   }
   1396   const flatbuffers::Vector<int64_t> *vector_of_longs() const {
   1397     return GetPointer<const flatbuffers::Vector<int64_t> *>(VT_VECTOR_OF_LONGS);
   1398   }
   1399   flatbuffers::Vector<int64_t> *mutable_vector_of_longs() {
   1400     return GetPointer<flatbuffers::Vector<int64_t> *>(VT_VECTOR_OF_LONGS);
   1401   }
   1402   const flatbuffers::Vector<double> *vector_of_doubles() const {
   1403     return GetPointer<const flatbuffers::Vector<double> *>(VT_VECTOR_OF_DOUBLES);
   1404   }
   1405   flatbuffers::Vector<double> *mutable_vector_of_doubles() {
   1406     return GetPointer<flatbuffers::Vector<double> *>(VT_VECTOR_OF_DOUBLES);
   1407   }
   1408   const MyGame::InParentNamespace *parent_namespace_test() const {
   1409     return GetPointer<const MyGame::InParentNamespace *>(VT_PARENT_NAMESPACE_TEST);
   1410   }
   1411   MyGame::InParentNamespace *mutable_parent_namespace_test() {
   1412     return GetPointer<MyGame::InParentNamespace *>(VT_PARENT_NAMESPACE_TEST);
   1413   }
   1414   const flatbuffers::Vector<flatbuffers::Offset<Referrable>> *vector_of_referrables() const {
   1415     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Referrable>> *>(VT_VECTOR_OF_REFERRABLES);
   1416   }
   1417   flatbuffers::Vector<flatbuffers::Offset<Referrable>> *mutable_vector_of_referrables() {
   1418     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<Referrable>> *>(VT_VECTOR_OF_REFERRABLES);
   1419   }
   1420   uint64_t single_weak_reference() const {
   1421     return GetField<uint64_t>(VT_SINGLE_WEAK_REFERENCE, 0);
   1422   }
   1423   bool mutate_single_weak_reference(uint64_t _single_weak_reference) {
   1424     return SetField<uint64_t>(VT_SINGLE_WEAK_REFERENCE, _single_weak_reference, 0);
   1425   }
   1426   const flatbuffers::Vector<uint64_t> *vector_of_weak_references() const {
   1427     return GetPointer<const flatbuffers::Vector<uint64_t> *>(VT_VECTOR_OF_WEAK_REFERENCES);
   1428   }
   1429   flatbuffers::Vector<uint64_t> *mutable_vector_of_weak_references() {
   1430     return GetPointer<flatbuffers::Vector<uint64_t> *>(VT_VECTOR_OF_WEAK_REFERENCES);
   1431   }
   1432   const flatbuffers::Vector<flatbuffers::Offset<Referrable>> *vector_of_strong_referrables() const {
   1433     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Referrable>> *>(VT_VECTOR_OF_STRONG_REFERRABLES);
   1434   }
   1435   flatbuffers::Vector<flatbuffers::Offset<Referrable>> *mutable_vector_of_strong_referrables() {
   1436     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<Referrable>> *>(VT_VECTOR_OF_STRONG_REFERRABLES);
   1437   }
   1438   uint64_t co_owning_reference() const {
   1439     return GetField<uint64_t>(VT_CO_OWNING_REFERENCE, 0);
   1440   }
   1441   bool mutate_co_owning_reference(uint64_t _co_owning_reference) {
   1442     return SetField<uint64_t>(VT_CO_OWNING_REFERENCE, _co_owning_reference, 0);
   1443   }
   1444   const flatbuffers::Vector<uint64_t> *vector_of_co_owning_references() const {
   1445     return GetPointer<const flatbuffers::Vector<uint64_t> *>(VT_VECTOR_OF_CO_OWNING_REFERENCES);
   1446   }
   1447   flatbuffers::Vector<uint64_t> *mutable_vector_of_co_owning_references() {
   1448     return GetPointer<flatbuffers::Vector<uint64_t> *>(VT_VECTOR_OF_CO_OWNING_REFERENCES);
   1449   }
   1450   uint64_t non_owning_reference() const {
   1451     return GetField<uint64_t>(VT_NON_OWNING_REFERENCE, 0);
   1452   }
   1453   bool mutate_non_owning_reference(uint64_t _non_owning_reference) {
   1454     return SetField<uint64_t>(VT_NON_OWNING_REFERENCE, _non_owning_reference, 0);
   1455   }
   1456   const flatbuffers::Vector<uint64_t> *vector_of_non_owning_references() const {
   1457     return GetPointer<const flatbuffers::Vector<uint64_t> *>(VT_VECTOR_OF_NON_OWNING_REFERENCES);
   1458   }
   1459   flatbuffers::Vector<uint64_t> *mutable_vector_of_non_owning_references() {
   1460     return GetPointer<flatbuffers::Vector<uint64_t> *>(VT_VECTOR_OF_NON_OWNING_REFERENCES);
   1461   }
   1462   AnyUniqueAliases any_unique_type() const {
   1463     return static_cast<AnyUniqueAliases>(GetField<uint8_t>(VT_ANY_UNIQUE_TYPE, 0));
   1464   }
   1465   bool mutate_any_unique_type(AnyUniqueAliases _any_unique_type) {
   1466     return SetField<uint8_t>(VT_ANY_UNIQUE_TYPE, static_cast<uint8_t>(_any_unique_type), 0);
   1467   }
   1468   const void *any_unique() const {
   1469     return GetPointer<const void *>(VT_ANY_UNIQUE);
   1470   }
   1471   template<typename T> const T *any_unique_as() const;
   1472   const Monster *any_unique_as_M() const {
   1473     return any_unique_type() == AnyUniqueAliases_M ? static_cast<const Monster *>(any_unique()) : nullptr;
   1474   }
   1475   const TestSimpleTableWithEnum *any_unique_as_T() const {
   1476     return any_unique_type() == AnyUniqueAliases_T ? static_cast<const TestSimpleTableWithEnum *>(any_unique()) : nullptr;
   1477   }
   1478   const MyGame::Example2::Monster *any_unique_as_M2() const {
   1479     return any_unique_type() == AnyUniqueAliases_M2 ? static_cast<const MyGame::Example2::Monster *>(any_unique()) : nullptr;
   1480   }
   1481   void *mutable_any_unique() {
   1482     return GetPointer<void *>(VT_ANY_UNIQUE);
   1483   }
   1484   AnyAmbiguousAliases any_ambiguous_type() const {
   1485     return static_cast<AnyAmbiguousAliases>(GetField<uint8_t>(VT_ANY_AMBIGUOUS_TYPE, 0));
   1486   }
   1487   bool mutate_any_ambiguous_type(AnyAmbiguousAliases _any_ambiguous_type) {
   1488     return SetField<uint8_t>(VT_ANY_AMBIGUOUS_TYPE, static_cast<uint8_t>(_any_ambiguous_type), 0);
   1489   }
   1490   const void *any_ambiguous() const {
   1491     return GetPointer<const void *>(VT_ANY_AMBIGUOUS);
   1492   }
   1493   const Monster *any_ambiguous_as_M1() const {
   1494     return any_ambiguous_type() == AnyAmbiguousAliases_M1 ? static_cast<const Monster *>(any_ambiguous()) : nullptr;
   1495   }
   1496   const Monster *any_ambiguous_as_M2() const {
   1497     return any_ambiguous_type() == AnyAmbiguousAliases_M2 ? static_cast<const Monster *>(any_ambiguous()) : nullptr;
   1498   }
   1499   const Monster *any_ambiguous_as_M3() const {
   1500     return any_ambiguous_type() == AnyAmbiguousAliases_M3 ? static_cast<const Monster *>(any_ambiguous()) : nullptr;
   1501   }
   1502   void *mutable_any_ambiguous() {
   1503     return GetPointer<void *>(VT_ANY_AMBIGUOUS);
   1504   }
   1505   const flatbuffers::Vector<int8_t> *vector_of_enums() const {
   1506     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_VECTOR_OF_ENUMS);
   1507   }
   1508   flatbuffers::Vector<int8_t> *mutable_vector_of_enums() {
   1509     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_VECTOR_OF_ENUMS);
   1510   }
   1511   bool Verify(flatbuffers::Verifier &verifier) const {
   1512     return VerifyTableStart(verifier) &&
   1513            VerifyField<Vec3>(verifier, VT_POS) &&
   1514            VerifyField<int16_t>(verifier, VT_MANA) &&
   1515            VerifyField<int16_t>(verifier, VT_HP) &&
   1516            VerifyOffsetRequired(verifier, VT_NAME) &&
   1517            verifier.VerifyString(name()) &&
   1518            VerifyOffset(verifier, VT_INVENTORY) &&
   1519            verifier.VerifyVector(inventory()) &&
   1520            VerifyField<int8_t>(verifier, VT_COLOR) &&
   1521            VerifyField<uint8_t>(verifier, VT_TEST_TYPE) &&
   1522            VerifyOffset(verifier, VT_TEST) &&
   1523            VerifyAny(verifier, test(), test_type()) &&
   1524            VerifyOffset(verifier, VT_TEST4) &&
   1525            verifier.VerifyVector(test4()) &&
   1526            VerifyOffset(verifier, VT_TESTARRAYOFSTRING) &&
   1527            verifier.VerifyVector(testarrayofstring()) &&
   1528            verifier.VerifyVectorOfStrings(testarrayofstring()) &&
   1529            VerifyOffset(verifier, VT_TESTARRAYOFTABLES) &&
   1530            verifier.VerifyVector(testarrayoftables()) &&
   1531            verifier.VerifyVectorOfTables(testarrayoftables()) &&
   1532            VerifyOffset(verifier, VT_ENEMY) &&
   1533            verifier.VerifyTable(enemy()) &&
   1534            VerifyOffset(verifier, VT_TESTNESTEDFLATBUFFER) &&
   1535            verifier.VerifyVector(testnestedflatbuffer()) &&
   1536            VerifyOffset(verifier, VT_TESTEMPTY) &&
   1537            verifier.VerifyTable(testempty()) &&
   1538            VerifyField<uint8_t>(verifier, VT_TESTBOOL) &&
   1539            VerifyField<int32_t>(verifier, VT_TESTHASHS32_FNV1) &&
   1540            VerifyField<uint32_t>(verifier, VT_TESTHASHU32_FNV1) &&
   1541            VerifyField<int64_t>(verifier, VT_TESTHASHS64_FNV1) &&
   1542            VerifyField<uint64_t>(verifier, VT_TESTHASHU64_FNV1) &&
   1543            VerifyField<int32_t>(verifier, VT_TESTHASHS32_FNV1A) &&
   1544            VerifyField<uint32_t>(verifier, VT_TESTHASHU32_FNV1A) &&
   1545            VerifyField<int64_t>(verifier, VT_TESTHASHS64_FNV1A) &&
   1546            VerifyField<uint64_t>(verifier, VT_TESTHASHU64_FNV1A) &&
   1547            VerifyOffset(verifier, VT_TESTARRAYOFBOOLS) &&
   1548            verifier.VerifyVector(testarrayofbools()) &&
   1549            VerifyField<float>(verifier, VT_TESTF) &&
   1550            VerifyField<float>(verifier, VT_TESTF2) &&
   1551            VerifyField<float>(verifier, VT_TESTF3) &&
   1552            VerifyOffset(verifier, VT_TESTARRAYOFSTRING2) &&
   1553            verifier.VerifyVector(testarrayofstring2()) &&
   1554            verifier.VerifyVectorOfStrings(testarrayofstring2()) &&
   1555            VerifyOffset(verifier, VT_TESTARRAYOFSORTEDSTRUCT) &&
   1556            verifier.VerifyVector(testarrayofsortedstruct()) &&
   1557            VerifyOffset(verifier, VT_FLEX) &&
   1558            verifier.VerifyVector(flex()) &&
   1559            VerifyOffset(verifier, VT_TEST5) &&
   1560            verifier.VerifyVector(test5()) &&
   1561            VerifyOffset(verifier, VT_VECTOR_OF_LONGS) &&
   1562            verifier.VerifyVector(vector_of_longs()) &&
   1563            VerifyOffset(verifier, VT_VECTOR_OF_DOUBLES) &&
   1564            verifier.VerifyVector(vector_of_doubles()) &&
   1565            VerifyOffset(verifier, VT_PARENT_NAMESPACE_TEST) &&
   1566            verifier.VerifyTable(parent_namespace_test()) &&
   1567            VerifyOffset(verifier, VT_VECTOR_OF_REFERRABLES) &&
   1568            verifier.VerifyVector(vector_of_referrables()) &&
   1569            verifier.VerifyVectorOfTables(vector_of_referrables()) &&
   1570            VerifyField<uint64_t>(verifier, VT_SINGLE_WEAK_REFERENCE) &&
   1571            VerifyOffset(verifier, VT_VECTOR_OF_WEAK_REFERENCES) &&
   1572            verifier.VerifyVector(vector_of_weak_references()) &&
   1573            VerifyOffset(verifier, VT_VECTOR_OF_STRONG_REFERRABLES) &&
   1574            verifier.VerifyVector(vector_of_strong_referrables()) &&
   1575            verifier.VerifyVectorOfTables(vector_of_strong_referrables()) &&
   1576            VerifyField<uint64_t>(verifier, VT_CO_OWNING_REFERENCE) &&
   1577            VerifyOffset(verifier, VT_VECTOR_OF_CO_OWNING_REFERENCES) &&
   1578            verifier.VerifyVector(vector_of_co_owning_references()) &&
   1579            VerifyField<uint64_t>(verifier, VT_NON_OWNING_REFERENCE) &&
   1580            VerifyOffset(verifier, VT_VECTOR_OF_NON_OWNING_REFERENCES) &&
   1581            verifier.VerifyVector(vector_of_non_owning_references()) &&
   1582            VerifyField<uint8_t>(verifier, VT_ANY_UNIQUE_TYPE) &&
   1583            VerifyOffset(verifier, VT_ANY_UNIQUE) &&
   1584            VerifyAnyUniqueAliases(verifier, any_unique(), any_unique_type()) &&
   1585            VerifyField<uint8_t>(verifier, VT_ANY_AMBIGUOUS_TYPE) &&
   1586            VerifyOffset(verifier, VT_ANY_AMBIGUOUS) &&
   1587            VerifyAnyAmbiguousAliases(verifier, any_ambiguous(), any_ambiguous_type()) &&
   1588            VerifyOffset(verifier, VT_VECTOR_OF_ENUMS) &&
   1589            verifier.VerifyVector(vector_of_enums()) &&
   1590            verifier.EndTable();
   1591   }
   1592   MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1593   void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1594   static flatbuffers::Offset<Monster> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1595 };
   1596 
   1597 template<> inline const Monster *Monster::test_as<Monster>() const {
   1598   return test_as_Monster();
   1599 }
   1600 
   1601 template<> inline const TestSimpleTableWithEnum *Monster::test_as<TestSimpleTableWithEnum>() const {
   1602   return test_as_TestSimpleTableWithEnum();
   1603 }
   1604 
   1605 template<> inline const MyGame::Example2::Monster *Monster::test_as<MyGame::Example2::Monster>() const {
   1606   return test_as_MyGame_Example2_Monster();
   1607 }
   1608 
   1609 template<> inline const Monster *Monster::any_unique_as<Monster>() const {
   1610   return any_unique_as_M();
   1611 }
   1612 
   1613 template<> inline const TestSimpleTableWithEnum *Monster::any_unique_as<TestSimpleTableWithEnum>() const {
   1614   return any_unique_as_T();
   1615 }
   1616 
   1617 template<> inline const MyGame::Example2::Monster *Monster::any_unique_as<MyGame::Example2::Monster>() const {
   1618   return any_unique_as_M2();
   1619 }
   1620 
   1621 struct MonsterBuilder {
   1622   flatbuffers::FlatBufferBuilder &fbb_;
   1623   flatbuffers::uoffset_t start_;
   1624   void add_pos(const Vec3 *pos) {
   1625     fbb_.AddStruct(Monster::VT_POS, pos);
   1626   }
   1627   void add_mana(int16_t mana) {
   1628     fbb_.AddElement<int16_t>(Monster::VT_MANA, mana, 150);
   1629   }
   1630   void add_hp(int16_t hp) {
   1631     fbb_.AddElement<int16_t>(Monster::VT_HP, hp, 100);
   1632   }
   1633   void add_name(flatbuffers::Offset<flatbuffers::String> name) {
   1634     fbb_.AddOffset(Monster::VT_NAME, name);
   1635   }
   1636   void add_inventory(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> inventory) {
   1637     fbb_.AddOffset(Monster::VT_INVENTORY, inventory);
   1638   }
   1639   void add_color(Color color) {
   1640     fbb_.AddElement<int8_t>(Monster::VT_COLOR, static_cast<int8_t>(color), 8);
   1641   }
   1642   void add_test_type(Any test_type) {
   1643     fbb_.AddElement<uint8_t>(Monster::VT_TEST_TYPE, static_cast<uint8_t>(test_type), 0);
   1644   }
   1645   void add_test(flatbuffers::Offset<void> test) {
   1646     fbb_.AddOffset(Monster::VT_TEST, test);
   1647   }
   1648   void add_test4(flatbuffers::Offset<flatbuffers::Vector<const Test *>> test4) {
   1649     fbb_.AddOffset(Monster::VT_TEST4, test4);
   1650   }
   1651   void add_testarrayofstring(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> testarrayofstring) {
   1652     fbb_.AddOffset(Monster::VT_TESTARRAYOFSTRING, testarrayofstring);
   1653   }
   1654   void add_testarrayoftables(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Monster>>> testarrayoftables) {
   1655     fbb_.AddOffset(Monster::VT_TESTARRAYOFTABLES, testarrayoftables);
   1656   }
   1657   void add_enemy(flatbuffers::Offset<Monster> enemy) {
   1658     fbb_.AddOffset(Monster::VT_ENEMY, enemy);
   1659   }
   1660   void add_testnestedflatbuffer(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> testnestedflatbuffer) {
   1661     fbb_.AddOffset(Monster::VT_TESTNESTEDFLATBUFFER, testnestedflatbuffer);
   1662   }
   1663   void add_testempty(flatbuffers::Offset<Stat> testempty) {
   1664     fbb_.AddOffset(Monster::VT_TESTEMPTY, testempty);
   1665   }
   1666   void add_testbool(bool testbool) {
   1667     fbb_.AddElement<uint8_t>(Monster::VT_TESTBOOL, static_cast<uint8_t>(testbool), 0);
   1668   }
   1669   void add_testhashs32_fnv1(int32_t testhashs32_fnv1) {
   1670     fbb_.AddElement<int32_t>(Monster::VT_TESTHASHS32_FNV1, testhashs32_fnv1, 0);
   1671   }
   1672   void add_testhashu32_fnv1(uint32_t testhashu32_fnv1) {
   1673     fbb_.AddElement<uint32_t>(Monster::VT_TESTHASHU32_FNV1, testhashu32_fnv1, 0);
   1674   }
   1675   void add_testhashs64_fnv1(int64_t testhashs64_fnv1) {
   1676     fbb_.AddElement<int64_t>(Monster::VT_TESTHASHS64_FNV1, testhashs64_fnv1, 0);
   1677   }
   1678   void add_testhashu64_fnv1(uint64_t testhashu64_fnv1) {
   1679     fbb_.AddElement<uint64_t>(Monster::VT_TESTHASHU64_FNV1, testhashu64_fnv1, 0);
   1680   }
   1681   void add_testhashs32_fnv1a(int32_t testhashs32_fnv1a) {
   1682     fbb_.AddElement<int32_t>(Monster::VT_TESTHASHS32_FNV1A, testhashs32_fnv1a, 0);
   1683   }
   1684   void add_testhashu32_fnv1a(uint32_t testhashu32_fnv1a) {
   1685     fbb_.AddElement<uint32_t>(Monster::VT_TESTHASHU32_FNV1A, testhashu32_fnv1a, 0);
   1686   }
   1687   void add_testhashs64_fnv1a(int64_t testhashs64_fnv1a) {
   1688     fbb_.AddElement<int64_t>(Monster::VT_TESTHASHS64_FNV1A, testhashs64_fnv1a, 0);
   1689   }
   1690   void add_testhashu64_fnv1a(uint64_t testhashu64_fnv1a) {
   1691     fbb_.AddElement<uint64_t>(Monster::VT_TESTHASHU64_FNV1A, testhashu64_fnv1a, 0);
   1692   }
   1693   void add_testarrayofbools(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> testarrayofbools) {
   1694     fbb_.AddOffset(Monster::VT_TESTARRAYOFBOOLS, testarrayofbools);
   1695   }
   1696   void add_testf(float testf) {
   1697     fbb_.AddElement<float>(Monster::VT_TESTF, testf, 3.14159f);
   1698   }
   1699   void add_testf2(float testf2) {
   1700     fbb_.AddElement<float>(Monster::VT_TESTF2, testf2, 3.0f);
   1701   }
   1702   void add_testf3(float testf3) {
   1703     fbb_.AddElement<float>(Monster::VT_TESTF3, testf3, 0.0f);
   1704   }
   1705   void add_testarrayofstring2(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> testarrayofstring2) {
   1706     fbb_.AddOffset(Monster::VT_TESTARRAYOFSTRING2, testarrayofstring2);
   1707   }
   1708   void add_testarrayofsortedstruct(flatbuffers::Offset<flatbuffers::Vector<const Ability *>> testarrayofsortedstruct) {
   1709     fbb_.AddOffset(Monster::VT_TESTARRAYOFSORTEDSTRUCT, testarrayofsortedstruct);
   1710   }
   1711   void add_flex(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> flex) {
   1712     fbb_.AddOffset(Monster::VT_FLEX, flex);
   1713   }
   1714   void add_test5(flatbuffers::Offset<flatbuffers::Vector<const Test *>> test5) {
   1715     fbb_.AddOffset(Monster::VT_TEST5, test5);
   1716   }
   1717   void add_vector_of_longs(flatbuffers::Offset<flatbuffers::Vector<int64_t>> vector_of_longs) {
   1718     fbb_.AddOffset(Monster::VT_VECTOR_OF_LONGS, vector_of_longs);
   1719   }
   1720   void add_vector_of_doubles(flatbuffers::Offset<flatbuffers::Vector<double>> vector_of_doubles) {
   1721     fbb_.AddOffset(Monster::VT_VECTOR_OF_DOUBLES, vector_of_doubles);
   1722   }
   1723   void add_parent_namespace_test(flatbuffers::Offset<MyGame::InParentNamespace> parent_namespace_test) {
   1724     fbb_.AddOffset(Monster::VT_PARENT_NAMESPACE_TEST, parent_namespace_test);
   1725   }
   1726   void add_vector_of_referrables(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Referrable>>> vector_of_referrables) {
   1727     fbb_.AddOffset(Monster::VT_VECTOR_OF_REFERRABLES, vector_of_referrables);
   1728   }
   1729   void add_single_weak_reference(uint64_t single_weak_reference) {
   1730     fbb_.AddElement<uint64_t>(Monster::VT_SINGLE_WEAK_REFERENCE, single_weak_reference, 0);
   1731   }
   1732   void add_vector_of_weak_references(flatbuffers::Offset<flatbuffers::Vector<uint64_t>> vector_of_weak_references) {
   1733     fbb_.AddOffset(Monster::VT_VECTOR_OF_WEAK_REFERENCES, vector_of_weak_references);
   1734   }
   1735   void add_vector_of_strong_referrables(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Referrable>>> vector_of_strong_referrables) {
   1736     fbb_.AddOffset(Monster::VT_VECTOR_OF_STRONG_REFERRABLES, vector_of_strong_referrables);
   1737   }
   1738   void add_co_owning_reference(uint64_t co_owning_reference) {
   1739     fbb_.AddElement<uint64_t>(Monster::VT_CO_OWNING_REFERENCE, co_owning_reference, 0);
   1740   }
   1741   void add_vector_of_co_owning_references(flatbuffers::Offset<flatbuffers::Vector<uint64_t>> vector_of_co_owning_references) {
   1742     fbb_.AddOffset(Monster::VT_VECTOR_OF_CO_OWNING_REFERENCES, vector_of_co_owning_references);
   1743   }
   1744   void add_non_owning_reference(uint64_t non_owning_reference) {
   1745     fbb_.AddElement<uint64_t>(Monster::VT_NON_OWNING_REFERENCE, non_owning_reference, 0);
   1746   }
   1747   void add_vector_of_non_owning_references(flatbuffers::Offset<flatbuffers::Vector<uint64_t>> vector_of_non_owning_references) {
   1748     fbb_.AddOffset(Monster::VT_VECTOR_OF_NON_OWNING_REFERENCES, vector_of_non_owning_references);
   1749   }
   1750   void add_any_unique_type(AnyUniqueAliases any_unique_type) {
   1751     fbb_.AddElement<uint8_t>(Monster::VT_ANY_UNIQUE_TYPE, static_cast<uint8_t>(any_unique_type), 0);
   1752   }
   1753   void add_any_unique(flatbuffers::Offset<void> any_unique) {
   1754     fbb_.AddOffset(Monster::VT_ANY_UNIQUE, any_unique);
   1755   }
   1756   void add_any_ambiguous_type(AnyAmbiguousAliases any_ambiguous_type) {
   1757     fbb_.AddElement<uint8_t>(Monster::VT_ANY_AMBIGUOUS_TYPE, static_cast<uint8_t>(any_ambiguous_type), 0);
   1758   }
   1759   void add_any_ambiguous(flatbuffers::Offset<void> any_ambiguous) {
   1760     fbb_.AddOffset(Monster::VT_ANY_AMBIGUOUS, any_ambiguous);
   1761   }
   1762   void add_vector_of_enums(flatbuffers::Offset<flatbuffers::Vector<int8_t>> vector_of_enums) {
   1763     fbb_.AddOffset(Monster::VT_VECTOR_OF_ENUMS, vector_of_enums);
   1764   }
   1765   explicit MonsterBuilder(flatbuffers::FlatBufferBuilder &_fbb)
   1766         : fbb_(_fbb) {
   1767     start_ = fbb_.StartTable();
   1768   }
   1769   MonsterBuilder &operator=(const MonsterBuilder &);
   1770   flatbuffers::Offset<Monster> Finish() {
   1771     const auto end = fbb_.EndTable(start_);
   1772     auto o = flatbuffers::Offset<Monster>(end);
   1773     fbb_.Required(o, Monster::VT_NAME);
   1774     return o;
   1775   }
   1776 };
   1777 
   1778 inline flatbuffers::Offset<Monster> CreateMonster(
   1779     flatbuffers::FlatBufferBuilder &_fbb,
   1780     const Vec3 *pos = 0,
   1781     int16_t mana = 150,
   1782     int16_t hp = 100,
   1783     flatbuffers::Offset<flatbuffers::String> name = 0,
   1784     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> inventory = 0,
   1785     Color color = Color_Blue,
   1786     Any test_type = Any_NONE,
   1787     flatbuffers::Offset<void> test = 0,
   1788     flatbuffers::Offset<flatbuffers::Vector<const Test *>> test4 = 0,
   1789     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> testarrayofstring = 0,
   1790     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Monster>>> testarrayoftables = 0,
   1791     flatbuffers::Offset<Monster> enemy = 0,
   1792     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> testnestedflatbuffer = 0,
   1793     flatbuffers::Offset<Stat> testempty = 0,
   1794     bool testbool = false,
   1795     int32_t testhashs32_fnv1 = 0,
   1796     uint32_t testhashu32_fnv1 = 0,
   1797     int64_t testhashs64_fnv1 = 0,
   1798     uint64_t testhashu64_fnv1 = 0,
   1799     int32_t testhashs32_fnv1a = 0,
   1800     uint32_t testhashu32_fnv1a = 0,
   1801     int64_t testhashs64_fnv1a = 0,
   1802     uint64_t testhashu64_fnv1a = 0,
   1803     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> testarrayofbools = 0,
   1804     float testf = 3.14159f,
   1805     float testf2 = 3.0f,
   1806     float testf3 = 0.0f,
   1807     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> testarrayofstring2 = 0,
   1808     flatbuffers::Offset<flatbuffers::Vector<const Ability *>> testarrayofsortedstruct = 0,
   1809     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> flex = 0,
   1810     flatbuffers::Offset<flatbuffers::Vector<const Test *>> test5 = 0,
   1811     flatbuffers::Offset<flatbuffers::Vector<int64_t>> vector_of_longs = 0,
   1812     flatbuffers::Offset<flatbuffers::Vector<double>> vector_of_doubles = 0,
   1813     flatbuffers::Offset<MyGame::InParentNamespace> parent_namespace_test = 0,
   1814     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Referrable>>> vector_of_referrables = 0,
   1815     uint64_t single_weak_reference = 0,
   1816     flatbuffers::Offset<flatbuffers::Vector<uint64_t>> vector_of_weak_references = 0,
   1817     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Referrable>>> vector_of_strong_referrables = 0,
   1818     uint64_t co_owning_reference = 0,
   1819     flatbuffers::Offset<flatbuffers::Vector<uint64_t>> vector_of_co_owning_references = 0,
   1820     uint64_t non_owning_reference = 0,
   1821     flatbuffers::Offset<flatbuffers::Vector<uint64_t>> vector_of_non_owning_references = 0,
   1822     AnyUniqueAliases any_unique_type = AnyUniqueAliases_NONE,
   1823     flatbuffers::Offset<void> any_unique = 0,
   1824     AnyAmbiguousAliases any_ambiguous_type = AnyAmbiguousAliases_NONE,
   1825     flatbuffers::Offset<void> any_ambiguous = 0,
   1826     flatbuffers::Offset<flatbuffers::Vector<int8_t>> vector_of_enums = 0) {
   1827   MonsterBuilder builder_(_fbb);
   1828   builder_.add_non_owning_reference(non_owning_reference);
   1829   builder_.add_co_owning_reference(co_owning_reference);
   1830   builder_.add_single_weak_reference(single_weak_reference);
   1831   builder_.add_testhashu64_fnv1a(testhashu64_fnv1a);
   1832   builder_.add_testhashs64_fnv1a(testhashs64_fnv1a);
   1833   builder_.add_testhashu64_fnv1(testhashu64_fnv1);
   1834   builder_.add_testhashs64_fnv1(testhashs64_fnv1);
   1835   builder_.add_vector_of_enums(vector_of_enums);
   1836   builder_.add_any_ambiguous(any_ambiguous);
   1837   builder_.add_any_unique(any_unique);
   1838   builder_.add_vector_of_non_owning_references(vector_of_non_owning_references);
   1839   builder_.add_vector_of_co_owning_references(vector_of_co_owning_references);
   1840   builder_.add_vector_of_strong_referrables(vector_of_strong_referrables);
   1841   builder_.add_vector_of_weak_references(vector_of_weak_references);
   1842   builder_.add_vector_of_referrables(vector_of_referrables);
   1843   builder_.add_parent_namespace_test(parent_namespace_test);
   1844   builder_.add_vector_of_doubles(vector_of_doubles);
   1845   builder_.add_vector_of_longs(vector_of_longs);
   1846   builder_.add_test5(test5);
   1847   builder_.add_flex(flex);
   1848   builder_.add_testarrayofsortedstruct(testarrayofsortedstruct);
   1849   builder_.add_testarrayofstring2(testarrayofstring2);
   1850   builder_.add_testf3(testf3);
   1851   builder_.add_testf2(testf2);
   1852   builder_.add_testf(testf);
   1853   builder_.add_testarrayofbools(testarrayofbools);
   1854   builder_.add_testhashu32_fnv1a(testhashu32_fnv1a);
   1855   builder_.add_testhashs32_fnv1a(testhashs32_fnv1a);
   1856   builder_.add_testhashu32_fnv1(testhashu32_fnv1);
   1857   builder_.add_testhashs32_fnv1(testhashs32_fnv1);
   1858   builder_.add_testempty(testempty);
   1859   builder_.add_testnestedflatbuffer(testnestedflatbuffer);
   1860   builder_.add_enemy(enemy);
   1861   builder_.add_testarrayoftables(testarrayoftables);
   1862   builder_.add_testarrayofstring(testarrayofstring);
   1863   builder_.add_test4(test4);
   1864   builder_.add_test(test);
   1865   builder_.add_inventory(inventory);
   1866   builder_.add_name(name);
   1867   builder_.add_pos(pos);
   1868   builder_.add_hp(hp);
   1869   builder_.add_mana(mana);
   1870   builder_.add_any_ambiguous_type(any_ambiguous_type);
   1871   builder_.add_any_unique_type(any_unique_type);
   1872   builder_.add_testbool(testbool);
   1873   builder_.add_test_type(test_type);
   1874   builder_.add_color(color);
   1875   return builder_.Finish();
   1876 }
   1877 
   1878 inline flatbuffers::Offset<Monster> CreateMonsterDirect(
   1879     flatbuffers::FlatBufferBuilder &_fbb,
   1880     const Vec3 *pos = 0,
   1881     int16_t mana = 150,
   1882     int16_t hp = 100,
   1883     const char *name = nullptr,
   1884     const std::vector<uint8_t> *inventory = nullptr,
   1885     Color color = Color_Blue,
   1886     Any test_type = Any_NONE,
   1887     flatbuffers::Offset<void> test = 0,
   1888     const std::vector<Test> *test4 = nullptr,
   1889     const std::vector<flatbuffers::Offset<flatbuffers::String>> *testarrayofstring = nullptr,
   1890     const std::vector<flatbuffers::Offset<Monster>> *testarrayoftables = nullptr,
   1891     flatbuffers::Offset<Monster> enemy = 0,
   1892     const std::vector<uint8_t> *testnestedflatbuffer = nullptr,
   1893     flatbuffers::Offset<Stat> testempty = 0,
   1894     bool testbool = false,
   1895     int32_t testhashs32_fnv1 = 0,
   1896     uint32_t testhashu32_fnv1 = 0,
   1897     int64_t testhashs64_fnv1 = 0,
   1898     uint64_t testhashu64_fnv1 = 0,
   1899     int32_t testhashs32_fnv1a = 0,
   1900     uint32_t testhashu32_fnv1a = 0,
   1901     int64_t testhashs64_fnv1a = 0,
   1902     uint64_t testhashu64_fnv1a = 0,
   1903     const std::vector<uint8_t> *testarrayofbools = nullptr,
   1904     float testf = 3.14159f,
   1905     float testf2 = 3.0f,
   1906     float testf3 = 0.0f,
   1907     const std::vector<flatbuffers::Offset<flatbuffers::String>> *testarrayofstring2 = nullptr,
   1908     const std::vector<Ability> *testarrayofsortedstruct = nullptr,
   1909     const std::vector<uint8_t> *flex = nullptr,
   1910     const std::vector<Test> *test5 = nullptr,
   1911     const std::vector<int64_t> *vector_of_longs = nullptr,
   1912     const std::vector<double> *vector_of_doubles = nullptr,
   1913     flatbuffers::Offset<MyGame::InParentNamespace> parent_namespace_test = 0,
   1914     const std::vector<flatbuffers::Offset<Referrable>> *vector_of_referrables = nullptr,
   1915     uint64_t single_weak_reference = 0,
   1916     const std::vector<uint64_t> *vector_of_weak_references = nullptr,
   1917     const std::vector<flatbuffers::Offset<Referrable>> *vector_of_strong_referrables = nullptr,
   1918     uint64_t co_owning_reference = 0,
   1919     const std::vector<uint64_t> *vector_of_co_owning_references = nullptr,
   1920     uint64_t non_owning_reference = 0,
   1921     const std::vector<uint64_t> *vector_of_non_owning_references = nullptr,
   1922     AnyUniqueAliases any_unique_type = AnyUniqueAliases_NONE,
   1923     flatbuffers::Offset<void> any_unique = 0,
   1924     AnyAmbiguousAliases any_ambiguous_type = AnyAmbiguousAliases_NONE,
   1925     flatbuffers::Offset<void> any_ambiguous = 0,
   1926     const std::vector<int8_t> *vector_of_enums = nullptr) {
   1927   auto name__ = name ? _fbb.CreateString(name) : 0;
   1928   auto inventory__ = inventory ? _fbb.CreateVector<uint8_t>(*inventory) : 0;
   1929   auto test4__ = test4 ? _fbb.CreateVectorOfStructs<Test>(*test4) : 0;
   1930   auto testarrayofstring__ = testarrayofstring ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*testarrayofstring) : 0;
   1931   auto testarrayoftables__ = testarrayoftables ? _fbb.CreateVector<flatbuffers::Offset<Monster>>(*testarrayoftables) : 0;
   1932   auto testnestedflatbuffer__ = testnestedflatbuffer ? _fbb.CreateVector<uint8_t>(*testnestedflatbuffer) : 0;
   1933   auto testarrayofbools__ = testarrayofbools ? _fbb.CreateVector<uint8_t>(*testarrayofbools) : 0;
   1934   auto testarrayofstring2__ = testarrayofstring2 ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*testarrayofstring2) : 0;
   1935   auto testarrayofsortedstruct__ = testarrayofsortedstruct ? _fbb.CreateVectorOfStructs<Ability>(*testarrayofsortedstruct) : 0;
   1936   auto flex__ = flex ? _fbb.CreateVector<uint8_t>(*flex) : 0;
   1937   auto test5__ = test5 ? _fbb.CreateVectorOfStructs<Test>(*test5) : 0;
   1938   auto vector_of_longs__ = vector_of_longs ? _fbb.CreateVector<int64_t>(*vector_of_longs) : 0;
   1939   auto vector_of_doubles__ = vector_of_doubles ? _fbb.CreateVector<double>(*vector_of_doubles) : 0;
   1940   auto vector_of_referrables__ = vector_of_referrables ? _fbb.CreateVector<flatbuffers::Offset<Referrable>>(*vector_of_referrables) : 0;
   1941   auto vector_of_weak_references__ = vector_of_weak_references ? _fbb.CreateVector<uint64_t>(*vector_of_weak_references) : 0;
   1942   auto vector_of_strong_referrables__ = vector_of_strong_referrables ? _fbb.CreateVector<flatbuffers::Offset<Referrable>>(*vector_of_strong_referrables) : 0;
   1943   auto vector_of_co_owning_references__ = vector_of_co_owning_references ? _fbb.CreateVector<uint64_t>(*vector_of_co_owning_references) : 0;
   1944   auto vector_of_non_owning_references__ = vector_of_non_owning_references ? _fbb.CreateVector<uint64_t>(*vector_of_non_owning_references) : 0;
   1945   auto vector_of_enums__ = vector_of_enums ? _fbb.CreateVector<int8_t>(*vector_of_enums) : 0;
   1946   return MyGame::Example::CreateMonster(
   1947       _fbb,
   1948       pos,
   1949       mana,
   1950       hp,
   1951       name__,
   1952       inventory__,
   1953       color,
   1954       test_type,
   1955       test,
   1956       test4__,
   1957       testarrayofstring__,
   1958       testarrayoftables__,
   1959       enemy,
   1960       testnestedflatbuffer__,
   1961       testempty,
   1962       testbool,
   1963       testhashs32_fnv1,
   1964       testhashu32_fnv1,
   1965       testhashs64_fnv1,
   1966       testhashu64_fnv1,
   1967       testhashs32_fnv1a,
   1968       testhashu32_fnv1a,
   1969       testhashs64_fnv1a,
   1970       testhashu64_fnv1a,
   1971       testarrayofbools__,
   1972       testf,
   1973       testf2,
   1974       testf3,
   1975       testarrayofstring2__,
   1976       testarrayofsortedstruct__,
   1977       flex__,
   1978       test5__,
   1979       vector_of_longs__,
   1980       vector_of_doubles__,
   1981       parent_namespace_test,
   1982       vector_of_referrables__,
   1983       single_weak_reference,
   1984       vector_of_weak_references__,
   1985       vector_of_strong_referrables__,
   1986       co_owning_reference,
   1987       vector_of_co_owning_references__,
   1988       non_owning_reference,
   1989       vector_of_non_owning_references__,
   1990       any_unique_type,
   1991       any_unique,
   1992       any_ambiguous_type,
   1993       any_ambiguous,
   1994       vector_of_enums__);
   1995 }
   1996 
   1997 flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1998 
   1999 struct TypeAliasesT : public flatbuffers::NativeTable {
   2000   typedef TypeAliases TableType;
   2001   int8_t i8;
   2002   uint8_t u8;
   2003   int16_t i16;
   2004   uint16_t u16;
   2005   int32_t i32;
   2006   uint32_t u32;
   2007   int64_t i64;
   2008   uint64_t u64;
   2009   float f32;
   2010   double f64;
   2011   std::vector<int8_t> v8;
   2012   std::vector<double> vf64;
   2013   TypeAliasesT()
   2014       : i8(0),
   2015         u8(0),
   2016         i16(0),
   2017         u16(0),
   2018         i32(0),
   2019         u32(0),
   2020         i64(0),
   2021         u64(0),
   2022         f32(0.0f),
   2023         f64(0.0) {
   2024   }
   2025 };
   2026 
   2027 inline bool operator==(const TypeAliasesT &lhs, const TypeAliasesT &rhs) {
   2028   return
   2029       (lhs.i8 == rhs.i8) &&
   2030       (lhs.u8 == rhs.u8) &&
   2031       (lhs.i16 == rhs.i16) &&
   2032       (lhs.u16 == rhs.u16) &&
   2033       (lhs.i32 == rhs.i32) &&
   2034       (lhs.u32 == rhs.u32) &&
   2035       (lhs.i64 == rhs.i64) &&
   2036       (lhs.u64 == rhs.u64) &&
   2037       (lhs.f32 == rhs.f32) &&
   2038       (lhs.f64 == rhs.f64) &&
   2039       (lhs.v8 == rhs.v8) &&
   2040       (lhs.vf64 == rhs.vf64);
   2041 }
   2042 
   2043 struct TypeAliases FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
   2044   typedef TypeAliasesT NativeTableType;
   2045   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
   2046     return TypeAliasesTypeTable();
   2047   }
   2048   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
   2049     VT_I8 = 4,
   2050     VT_U8 = 6,
   2051     VT_I16 = 8,
   2052     VT_U16 = 10,
   2053     VT_I32 = 12,
   2054     VT_U32 = 14,
   2055     VT_I64 = 16,
   2056     VT_U64 = 18,
   2057     VT_F32 = 20,
   2058     VT_F64 = 22,
   2059     VT_V8 = 24,
   2060     VT_VF64 = 26
   2061   };
   2062   int8_t i8() const {
   2063     return GetField<int8_t>(VT_I8, 0);
   2064   }
   2065   bool mutate_i8(int8_t _i8) {
   2066     return SetField<int8_t>(VT_I8, _i8, 0);
   2067   }
   2068   uint8_t u8() const {
   2069     return GetField<uint8_t>(VT_U8, 0);
   2070   }
   2071   bool mutate_u8(uint8_t _u8) {
   2072     return SetField<uint8_t>(VT_U8, _u8, 0);
   2073   }
   2074   int16_t i16() const {
   2075     return GetField<int16_t>(VT_I16, 0);
   2076   }
   2077   bool mutate_i16(int16_t _i16) {
   2078     return SetField<int16_t>(VT_I16, _i16, 0);
   2079   }
   2080   uint16_t u16() const {
   2081     return GetField<uint16_t>(VT_U16, 0);
   2082   }
   2083   bool mutate_u16(uint16_t _u16) {
   2084     return SetField<uint16_t>(VT_U16, _u16, 0);
   2085   }
   2086   int32_t i32() const {
   2087     return GetField<int32_t>(VT_I32, 0);
   2088   }
   2089   bool mutate_i32(int32_t _i32) {
   2090     return SetField<int32_t>(VT_I32, _i32, 0);
   2091   }
   2092   uint32_t u32() const {
   2093     return GetField<uint32_t>(VT_U32, 0);
   2094   }
   2095   bool mutate_u32(uint32_t _u32) {
   2096     return SetField<uint32_t>(VT_U32, _u32, 0);
   2097   }
   2098   int64_t i64() const {
   2099     return GetField<int64_t>(VT_I64, 0);
   2100   }
   2101   bool mutate_i64(int64_t _i64) {
   2102     return SetField<int64_t>(VT_I64, _i64, 0);
   2103   }
   2104   uint64_t u64() const {
   2105     return GetField<uint64_t>(VT_U64, 0);
   2106   }
   2107   bool mutate_u64(uint64_t _u64) {
   2108     return SetField<uint64_t>(VT_U64, _u64, 0);
   2109   }
   2110   float f32() const {
   2111     return GetField<float>(VT_F32, 0.0f);
   2112   }
   2113   bool mutate_f32(float _f32) {
   2114     return SetField<float>(VT_F32, _f32, 0.0f);
   2115   }
   2116   double f64() const {
   2117     return GetField<double>(VT_F64, 0.0);
   2118   }
   2119   bool mutate_f64(double _f64) {
   2120     return SetField<double>(VT_F64, _f64, 0.0);
   2121   }
   2122   const flatbuffers::Vector<int8_t> *v8() const {
   2123     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_V8);
   2124   }
   2125   flatbuffers::Vector<int8_t> *mutable_v8() {
   2126     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_V8);
   2127   }
   2128   const flatbuffers::Vector<double> *vf64() const {
   2129     return GetPointer<const flatbuffers::Vector<double> *>(VT_VF64);
   2130   }
   2131   flatbuffers::Vector<double> *mutable_vf64() {
   2132     return GetPointer<flatbuffers::Vector<double> *>(VT_VF64);
   2133   }
   2134   bool Verify(flatbuffers::Verifier &verifier) const {
   2135     return VerifyTableStart(verifier) &&
   2136            VerifyField<int8_t>(verifier, VT_I8) &&
   2137            VerifyField<uint8_t>(verifier, VT_U8) &&
   2138            VerifyField<int16_t>(verifier, VT_I16) &&
   2139            VerifyField<uint16_t>(verifier, VT_U16) &&
   2140            VerifyField<int32_t>(verifier, VT_I32) &&
   2141            VerifyField<uint32_t>(verifier, VT_U32) &&
   2142            VerifyField<int64_t>(verifier, VT_I64) &&
   2143            VerifyField<uint64_t>(verifier, VT_U64) &&
   2144            VerifyField<float>(verifier, VT_F32) &&
   2145            VerifyField<double>(verifier, VT_F64) &&
   2146            VerifyOffset(verifier, VT_V8) &&
   2147            verifier.VerifyVector(v8()) &&
   2148            VerifyOffset(verifier, VT_VF64) &&
   2149            verifier.VerifyVector(vf64()) &&
   2150            verifier.EndTable();
   2151   }
   2152   TypeAliasesT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   2153   void UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   2154   static flatbuffers::Offset<TypeAliases> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   2155 };
   2156 
   2157 struct TypeAliasesBuilder {
   2158   flatbuffers::FlatBufferBuilder &fbb_;
   2159   flatbuffers::uoffset_t start_;
   2160   void add_i8(int8_t i8) {
   2161     fbb_.AddElement<int8_t>(TypeAliases::VT_I8, i8, 0);
   2162   }
   2163   void add_u8(uint8_t u8) {
   2164     fbb_.AddElement<uint8_t>(TypeAliases::VT_U8, u8, 0);
   2165   }
   2166   void add_i16(int16_t i16) {
   2167     fbb_.AddElement<int16_t>(TypeAliases::VT_I16, i16, 0);
   2168   }
   2169   void add_u16(uint16_t u16) {
   2170     fbb_.AddElement<uint16_t>(TypeAliases::VT_U16, u16, 0);
   2171   }
   2172   void add_i32(int32_t i32) {
   2173     fbb_.AddElement<int32_t>(TypeAliases::VT_I32, i32, 0);
   2174   }
   2175   void add_u32(uint32_t u32) {
   2176     fbb_.AddElement<uint32_t>(TypeAliases::VT_U32, u32, 0);
   2177   }
   2178   void add_i64(int64_t i64) {
   2179     fbb_.AddElement<int64_t>(TypeAliases::VT_I64, i64, 0);
   2180   }
   2181   void add_u64(uint64_t u64) {
   2182     fbb_.AddElement<uint64_t>(TypeAliases::VT_U64, u64, 0);
   2183   }
   2184   void add_f32(float f32) {
   2185     fbb_.AddElement<float>(TypeAliases::VT_F32, f32, 0.0f);
   2186   }
   2187   void add_f64(double f64) {
   2188     fbb_.AddElement<double>(TypeAliases::VT_F64, f64, 0.0);
   2189   }
   2190   void add_v8(flatbuffers::Offset<flatbuffers::Vector<int8_t>> v8) {
   2191     fbb_.AddOffset(TypeAliases::VT_V8, v8);
   2192   }
   2193   void add_vf64(flatbuffers::Offset<flatbuffers::Vector<double>> vf64) {
   2194     fbb_.AddOffset(TypeAliases::VT_VF64, vf64);
   2195   }
   2196   explicit TypeAliasesBuilder(flatbuffers::FlatBufferBuilder &_fbb)
   2197         : fbb_(_fbb) {
   2198     start_ = fbb_.StartTable();
   2199   }
   2200   TypeAliasesBuilder &operator=(const TypeAliasesBuilder &);
   2201   flatbuffers::Offset<TypeAliases> Finish() {
   2202     const auto end = fbb_.EndTable(start_);
   2203     auto o = flatbuffers::Offset<TypeAliases>(end);
   2204     return o;
   2205   }
   2206 };
   2207 
   2208 inline flatbuffers::Offset<TypeAliases> CreateTypeAliases(
   2209     flatbuffers::FlatBufferBuilder &_fbb,
   2210     int8_t i8 = 0,
   2211     uint8_t u8 = 0,
   2212     int16_t i16 = 0,
   2213     uint16_t u16 = 0,
   2214     int32_t i32 = 0,
   2215     uint32_t u32 = 0,
   2216     int64_t i64 = 0,
   2217     uint64_t u64 = 0,
   2218     float f32 = 0.0f,
   2219     double f64 = 0.0,
   2220     flatbuffers::Offset<flatbuffers::Vector<int8_t>> v8 = 0,
   2221     flatbuffers::Offset<flatbuffers::Vector<double>> vf64 = 0) {
   2222   TypeAliasesBuilder builder_(_fbb);
   2223   builder_.add_f64(f64);
   2224   builder_.add_u64(u64);
   2225   builder_.add_i64(i64);
   2226   builder_.add_vf64(vf64);
   2227   builder_.add_v8(v8);
   2228   builder_.add_f32(f32);
   2229   builder_.add_u32(u32);
   2230   builder_.add_i32(i32);
   2231   builder_.add_u16(u16);
   2232   builder_.add_i16(i16);
   2233   builder_.add_u8(u8);
   2234   builder_.add_i8(i8);
   2235   return builder_.Finish();
   2236 }
   2237 
   2238 inline flatbuffers::Offset<TypeAliases> CreateTypeAliasesDirect(
   2239     flatbuffers::FlatBufferBuilder &_fbb,
   2240     int8_t i8 = 0,
   2241     uint8_t u8 = 0,
   2242     int16_t i16 = 0,
   2243     uint16_t u16 = 0,
   2244     int32_t i32 = 0,
   2245     uint32_t u32 = 0,
   2246     int64_t i64 = 0,
   2247     uint64_t u64 = 0,
   2248     float f32 = 0.0f,
   2249     double f64 = 0.0,
   2250     const std::vector<int8_t> *v8 = nullptr,
   2251     const std::vector<double> *vf64 = nullptr) {
   2252   auto v8__ = v8 ? _fbb.CreateVector<int8_t>(*v8) : 0;
   2253   auto vf64__ = vf64 ? _fbb.CreateVector<double>(*vf64) : 0;
   2254   return MyGame::Example::CreateTypeAliases(
   2255       _fbb,
   2256       i8,
   2257       u8,
   2258       i16,
   2259       u16,
   2260       i32,
   2261       u32,
   2262       i64,
   2263       u64,
   2264       f32,
   2265       f64,
   2266       v8__,
   2267       vf64__);
   2268 }
   2269 
   2270 flatbuffers::Offset<TypeAliases> CreateTypeAliases(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   2271 
   2272 }  // namespace Example
   2273 
   2274 inline InParentNamespaceT *InParentNamespace::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2275   auto _o = new InParentNamespaceT();
   2276   UnPackTo(_o, _resolver);
   2277   return _o;
   2278 }
   2279 
   2280 inline void InParentNamespace::UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2281   (void)_o;
   2282   (void)_resolver;
   2283 }
   2284 
   2285 inline flatbuffers::Offset<InParentNamespace> InParentNamespace::Pack(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2286   return CreateInParentNamespace(_fbb, _o, _rehasher);
   2287 }
   2288 
   2289 inline flatbuffers::Offset<InParentNamespace> CreateInParentNamespace(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2290   (void)_rehasher;
   2291   (void)_o;
   2292   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const InParentNamespaceT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
   2293   return MyGame::CreateInParentNamespace(
   2294       _fbb);
   2295 }
   2296 
   2297 namespace Example2 {
   2298 
   2299 inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2300   auto _o = new MonsterT();
   2301   UnPackTo(_o, _resolver);
   2302   return _o;
   2303 }
   2304 
   2305 inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2306   (void)_o;
   2307   (void)_resolver;
   2308 }
   2309 
   2310 inline flatbuffers::Offset<Monster> Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2311   return CreateMonster(_fbb, _o, _rehasher);
   2312 }
   2313 
   2314 inline flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2315   (void)_rehasher;
   2316   (void)_o;
   2317   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MonsterT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
   2318   return MyGame::Example2::CreateMonster(
   2319       _fbb);
   2320 }
   2321 
   2322 }  // namespace Example2
   2323 
   2324 namespace Example {
   2325 
   2326 inline TestSimpleTableWithEnumT *TestSimpleTableWithEnum::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2327   auto _o = new TestSimpleTableWithEnumT();
   2328   UnPackTo(_o, _resolver);
   2329   return _o;
   2330 }
   2331 
   2332 inline void TestSimpleTableWithEnum::UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2333   (void)_o;
   2334   (void)_resolver;
   2335   { auto _e = color(); _o->color = _e; };
   2336 }
   2337 
   2338 inline flatbuffers::Offset<TestSimpleTableWithEnum> TestSimpleTableWithEnum::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TestSimpleTableWithEnumT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2339   return CreateTestSimpleTableWithEnum(_fbb, _o, _rehasher);
   2340 }
   2341 
   2342 inline flatbuffers::Offset<TestSimpleTableWithEnum> CreateTestSimpleTableWithEnum(flatbuffers::FlatBufferBuilder &_fbb, const TestSimpleTableWithEnumT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2343   (void)_rehasher;
   2344   (void)_o;
   2345   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TestSimpleTableWithEnumT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
   2346   auto _color = _o->color;
   2347   return MyGame::Example::CreateTestSimpleTableWithEnum(
   2348       _fbb,
   2349       _color);
   2350 }
   2351 
   2352 inline StatT *Stat::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2353   auto _o = new StatT();
   2354   UnPackTo(_o, _resolver);
   2355   return _o;
   2356 }
   2357 
   2358 inline void Stat::UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2359   (void)_o;
   2360   (void)_resolver;
   2361   { auto _e = id(); if (_e) _o->id = _e->str(); };
   2362   { auto _e = val(); _o->val = _e; };
   2363   { auto _e = count(); _o->count = _e; };
   2364 }
   2365 
   2366 inline flatbuffers::Offset<Stat> Stat::Pack(flatbuffers::FlatBufferBuilder &_fbb, const StatT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2367   return CreateStat(_fbb, _o, _rehasher);
   2368 }
   2369 
   2370 inline flatbuffers::Offset<Stat> CreateStat(flatbuffers::FlatBufferBuilder &_fbb, const StatT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2371   (void)_rehasher;
   2372   (void)_o;
   2373   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const StatT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
   2374   auto _id = _o->id.empty() ? 0 : _fbb.CreateString(_o->id);
   2375   auto _val = _o->val;
   2376   auto _count = _o->count;
   2377   return MyGame::Example::CreateStat(
   2378       _fbb,
   2379       _id,
   2380       _val,
   2381       _count);
   2382 }
   2383 
   2384 inline ReferrableT *Referrable::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2385   auto _o = new ReferrableT();
   2386   UnPackTo(_o, _resolver);
   2387   return _o;
   2388 }
   2389 
   2390 inline void Referrable::UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2391   (void)_o;
   2392   (void)_resolver;
   2393   { auto _e = id(); _o->id = _e; };
   2394 }
   2395 
   2396 inline flatbuffers::Offset<Referrable> Referrable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReferrableT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2397   return CreateReferrable(_fbb, _o, _rehasher);
   2398 }
   2399 
   2400 inline flatbuffers::Offset<Referrable> CreateReferrable(flatbuffers::FlatBufferBuilder &_fbb, const ReferrableT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2401   (void)_rehasher;
   2402   (void)_o;
   2403   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ReferrableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
   2404   auto _id = _o->id;
   2405   return MyGame::Example::CreateReferrable(
   2406       _fbb,
   2407       _id);
   2408 }
   2409 
   2410 inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2411   auto _o = new MonsterT();
   2412   UnPackTo(_o, _resolver);
   2413   return _o;
   2414 }
   2415 
   2416 inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2417   (void)_o;
   2418   (void)_resolver;
   2419   { auto _e = pos(); if (_e) _o->pos = flatbuffers::unique_ptr<Vec3>(new Vec3(*_e)); };
   2420   { auto _e = mana(); _o->mana = _e; };
   2421   { auto _e = hp(); _o->hp = _e; };
   2422   { auto _e = name(); if (_e) _o->name = _e->str(); };
   2423   { auto _e = inventory(); if (_e) { _o->inventory.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->inventory[_i] = _e->Get(_i); } } };
   2424   { auto _e = color(); _o->color = _e; };
   2425   { auto _e = test_type(); _o->test.type = _e; };
   2426   { auto _e = test(); if (_e) _o->test.value = AnyUnion::UnPack(_e, test_type(), _resolver); };
   2427   { auto _e = test4(); if (_e) { _o->test4.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test4[_i] = *_e->Get(_i); } } };
   2428   { auto _e = testarrayofstring(); if (_e) { _o->testarrayofstring.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring[_i] = _e->Get(_i)->str(); } } };
   2429   { auto _e = testarrayoftables(); if (_e) { _o->testarrayoftables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayoftables[_i] = flatbuffers::unique_ptr<MonsterT>(_e->Get(_i)->UnPack(_resolver)); } } };
   2430   { auto _e = enemy(); if (_e) _o->enemy = flatbuffers::unique_ptr<MonsterT>(_e->UnPack(_resolver)); };
   2431   { auto _e = testnestedflatbuffer(); if (_e) { _o->testnestedflatbuffer.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testnestedflatbuffer[_i] = _e->Get(_i); } } };
   2432   { auto _e = testempty(); if (_e) _o->testempty = flatbuffers::unique_ptr<StatT>(_e->UnPack(_resolver)); };
   2433   { auto _e = testbool(); _o->testbool = _e; };
   2434   { auto _e = testhashs32_fnv1(); _o->testhashs32_fnv1 = _e; };
   2435   { auto _e = testhashu32_fnv1(); _o->testhashu32_fnv1 = _e; };
   2436   { auto _e = testhashs64_fnv1(); _o->testhashs64_fnv1 = _e; };
   2437   { auto _e = testhashu64_fnv1(); _o->testhashu64_fnv1 = _e; };
   2438   { auto _e = testhashs32_fnv1a(); _o->testhashs32_fnv1a = _e; };
   2439   { auto _e = testhashu32_fnv1a(); //scalar resolver, naked
   2440 if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->testhashu32_fnv1a), static_cast<flatbuffers::hash_value_t>(_e)); else _o->testhashu32_fnv1a = nullptr; };
   2441   { auto _e = testhashs64_fnv1a(); _o->testhashs64_fnv1a = _e; };
   2442   { auto _e = testhashu64_fnv1a(); _o->testhashu64_fnv1a = _e; };
   2443   { auto _e = testarrayofbools(); if (_e) { _o->testarrayofbools.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofbools[_i] = _e->Get(_i) != 0; } } };
   2444   { auto _e = testf(); _o->testf = _e; };
   2445   { auto _e = testf2(); _o->testf2 = _e; };
   2446   { auto _e = testf3(); _o->testf3 = _e; };
   2447   { auto _e = testarrayofstring2(); if (_e) { _o->testarrayofstring2.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring2[_i] = _e->Get(_i)->str(); } } };
   2448   { auto _e = testarrayofsortedstruct(); if (_e) { _o->testarrayofsortedstruct.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofsortedstruct[_i] = *_e->Get(_i); } } };
   2449   { auto _e = flex(); if (_e) { _o->flex.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->flex[_i] = _e->Get(_i); } } };
   2450   { auto _e = test5(); if (_e) { _o->test5.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test5[_i] = *_e->Get(_i); } } };
   2451   { auto _e = vector_of_longs(); if (_e) { _o->vector_of_longs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_longs[_i] = _e->Get(_i); } } };
   2452   { auto _e = vector_of_doubles(); if (_e) { _o->vector_of_doubles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_doubles[_i] = _e->Get(_i); } } };
   2453   { auto _e = parent_namespace_test(); if (_e) _o->parent_namespace_test = flatbuffers::unique_ptr<MyGame::InParentNamespaceT>(_e->UnPack(_resolver)); };
   2454   { auto _e = vector_of_referrables(); if (_e) { _o->vector_of_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_referrables[_i] = flatbuffers::unique_ptr<ReferrableT>(_e->Get(_i)->UnPack(_resolver)); } } };
   2455   { auto _e = single_weak_reference(); //scalar resolver, naked
   2456 if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->single_weak_reference), static_cast<flatbuffers::hash_value_t>(_e)); else _o->single_weak_reference = nullptr; };
   2457   { auto _e = vector_of_weak_references(); if (_e) { _o->vector_of_weak_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, naked
   2458 if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->vector_of_weak_references[_i]), static_cast<flatbuffers::hash_value_t>(_e->Get(_i))); else _o->vector_of_weak_references[_i] = nullptr; } } };
   2459   { auto _e = vector_of_strong_referrables(); if (_e) { _o->vector_of_strong_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_strong_referrables[_i] = flatbuffers::unique_ptr<ReferrableT>(_e->Get(_i)->UnPack(_resolver)); } } };
   2460   { auto _e = co_owning_reference(); //scalar resolver, naked
   2461 if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->co_owning_reference), static_cast<flatbuffers::hash_value_t>(_e)); else _o->co_owning_reference = nullptr; };
   2462   { auto _e = vector_of_co_owning_references(); if (_e) { _o->vector_of_co_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, default_ptr_type
   2463 if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->vector_of_co_owning_references[_i]), static_cast<flatbuffers::hash_value_t>(_e->Get(_i)));/* else do nothing */; } } };
   2464   { auto _e = non_owning_reference(); //scalar resolver, naked
   2465 if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->non_owning_reference), static_cast<flatbuffers::hash_value_t>(_e)); else _o->non_owning_reference = nullptr; };
   2466   { auto _e = vector_of_non_owning_references(); if (_e) { _o->vector_of_non_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, naked
   2467 if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->vector_of_non_owning_references[_i]), static_cast<flatbuffers::hash_value_t>(_e->Get(_i))); else _o->vector_of_non_owning_references[_i] = nullptr; } } };
   2468   { auto _e = any_unique_type(); _o->any_unique.type = _e; };
   2469   { auto _e = any_unique(); if (_e) _o->any_unique.value = AnyUniqueAliasesUnion::UnPack(_e, any_unique_type(), _resolver); };
   2470   { auto _e = any_ambiguous_type(); _o->any_ambiguous.type = _e; };
   2471   { auto _e = any_ambiguous(); if (_e) _o->any_ambiguous.value = AnyAmbiguousAliasesUnion::UnPack(_e, any_ambiguous_type(), _resolver); };
   2472   { auto _e = vector_of_enums(); if (_e) { _o->vector_of_enums.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_enums[_i] = static_cast<Color>(_e->Get(_i)); } } };
   2473 }
   2474 
   2475 inline flatbuffers::Offset<Monster> Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2476   return CreateMonster(_fbb, _o, _rehasher);
   2477 }
   2478 
   2479 inline flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2480   (void)_rehasher;
   2481   (void)_o;
   2482   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MonsterT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
   2483   auto _pos = _o->pos ? _o->pos.get() : 0;
   2484   auto _mana = _o->mana;
   2485   auto _hp = _o->hp;
   2486   auto _name = _fbb.CreateString(_o->name);
   2487   auto _inventory = _o->inventory.size() ? _fbb.CreateVector(_o->inventory) : 0;
   2488   auto _color = _o->color;
   2489   auto _test_type = _o->test.type;
   2490   auto _test = _o->test.Pack(_fbb);
   2491   auto _test4 = _o->test4.size() ? _fbb.CreateVectorOfStructs(_o->test4) : 0;
   2492   auto _testarrayofstring = _o->testarrayofstring.size() ? _fbb.CreateVectorOfStrings(_o->testarrayofstring) : 0;
   2493   auto _testarrayoftables = _o->testarrayoftables.size() ? _fbb.CreateVector<flatbuffers::Offset<Monster>> (_o->testarrayoftables.size(), [](size_t i, _VectorArgs *__va) { return CreateMonster(*__va->__fbb, __va->__o->testarrayoftables[i].get(), __va->__rehasher); }, &_va ) : 0;
   2494   auto _enemy = _o->enemy ? CreateMonster(_fbb, _o->enemy.get(), _rehasher) : 0;
   2495   auto _testnestedflatbuffer = _o->testnestedflatbuffer.size() ? _fbb.CreateVector(_o->testnestedflatbuffer) : 0;
   2496   auto _testempty = _o->testempty ? CreateStat(_fbb, _o->testempty.get(), _rehasher) : 0;
   2497   auto _testbool = _o->testbool;
   2498   auto _testhashs32_fnv1 = _o->testhashs32_fnv1;
   2499   auto _testhashu32_fnv1 = _o->testhashu32_fnv1;
   2500   auto _testhashs64_fnv1 = _o->testhashs64_fnv1;
   2501   auto _testhashu64_fnv1 = _o->testhashu64_fnv1;
   2502   auto _testhashs32_fnv1a = _o->testhashs32_fnv1a;
   2503   auto _testhashu32_fnv1a = _rehasher ? static_cast<uint32_t>((*_rehasher)(_o->testhashu32_fnv1a)) : 0;
   2504   auto _testhashs64_fnv1a = _o->testhashs64_fnv1a;
   2505   auto _testhashu64_fnv1a = _o->testhashu64_fnv1a;
   2506   auto _testarrayofbools = _o->testarrayofbools.size() ? _fbb.CreateVector(_o->testarrayofbools) : 0;
   2507   auto _testf = _o->testf;
   2508   auto _testf2 = _o->testf2;
   2509   auto _testf3 = _o->testf3;
   2510   auto _testarrayofstring2 = _o->testarrayofstring2.size() ? _fbb.CreateVectorOfStrings(_o->testarrayofstring2) : 0;
   2511   auto _testarrayofsortedstruct = _o->testarrayofsortedstruct.size() ? _fbb.CreateVectorOfStructs(_o->testarrayofsortedstruct) : 0;
   2512   auto _flex = _o->flex.size() ? _fbb.CreateVector(_o->flex) : 0;
   2513   auto _test5 = _o->test5.size() ? _fbb.CreateVectorOfStructs(_o->test5) : 0;
   2514   auto _vector_of_longs = _o->vector_of_longs.size() ? _fbb.CreateVector(_o->vector_of_longs) : 0;
   2515   auto _vector_of_doubles = _o->vector_of_doubles.size() ? _fbb.CreateVector(_o->vector_of_doubles) : 0;
   2516   auto _parent_namespace_test = _o->parent_namespace_test ? CreateInParentNamespace(_fbb, _o->parent_namespace_test.get(), _rehasher) : 0;
   2517   auto _vector_of_referrables = _o->vector_of_referrables.size() ? _fbb.CreateVector<flatbuffers::Offset<Referrable>> (_o->vector_of_referrables.size(), [](size_t i, _VectorArgs *__va) { return CreateReferrable(*__va->__fbb, __va->__o->vector_of_referrables[i].get(), __va->__rehasher); }, &_va ) : 0;
   2518   auto _single_weak_reference = _rehasher ? static_cast<uint64_t>((*_rehasher)(_o->single_weak_reference)) : 0;
   2519   auto _vector_of_weak_references = _o->vector_of_weak_references.size() ? _fbb.CreateVector<uint64_t>(_o->vector_of_weak_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast<uint64_t>((*__va->__rehasher)(__va->__o->vector_of_weak_references[i])) : 0; }, &_va ) : 0;
   2520   auto _vector_of_strong_referrables = _o->vector_of_strong_referrables.size() ? _fbb.CreateVector<flatbuffers::Offset<Referrable>> (_o->vector_of_strong_referrables.size(), [](size_t i, _VectorArgs *__va) { return CreateReferrable(*__va->__fbb, __va->__o->vector_of_strong_referrables[i].get(), __va->__rehasher); }, &_va ) : 0;
   2521   auto _co_owning_reference = _rehasher ? static_cast<uint64_t>((*_rehasher)(_o->co_owning_reference)) : 0;
   2522   auto _vector_of_co_owning_references = _o->vector_of_co_owning_references.size() ? _fbb.CreateVector<uint64_t>(_o->vector_of_co_owning_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast<uint64_t>((*__va->__rehasher)(__va->__o->vector_of_co_owning_references[i].get())) : 0; }, &_va ) : 0;
   2523   auto _non_owning_reference = _rehasher ? static_cast<uint64_t>((*_rehasher)(_o->non_owning_reference)) : 0;
   2524   auto _vector_of_non_owning_references = _o->vector_of_non_owning_references.size() ? _fbb.CreateVector<uint64_t>(_o->vector_of_non_owning_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast<uint64_t>((*__va->__rehasher)(__va->__o->vector_of_non_owning_references[i])) : 0; }, &_va ) : 0;
   2525   auto _any_unique_type = _o->any_unique.type;
   2526   auto _any_unique = _o->any_unique.Pack(_fbb);
   2527   auto _any_ambiguous_type = _o->any_ambiguous.type;
   2528   auto _any_ambiguous = _o->any_ambiguous.Pack(_fbb);
   2529   auto _vector_of_enums = _o->vector_of_enums.size() ? _fbb.CreateVectorScalarCast<int8_t>(flatbuffers::data(_o->vector_of_enums), _o->vector_of_enums.size()) : 0;
   2530   return MyGame::Example::CreateMonster(
   2531       _fbb,
   2532       _pos,
   2533       _mana,
   2534       _hp,
   2535       _name,
   2536       _inventory,
   2537       _color,
   2538       _test_type,
   2539       _test,
   2540       _test4,
   2541       _testarrayofstring,
   2542       _testarrayoftables,
   2543       _enemy,
   2544       _testnestedflatbuffer,
   2545       _testempty,
   2546       _testbool,
   2547       _testhashs32_fnv1,
   2548       _testhashu32_fnv1,
   2549       _testhashs64_fnv1,
   2550       _testhashu64_fnv1,
   2551       _testhashs32_fnv1a,
   2552       _testhashu32_fnv1a,
   2553       _testhashs64_fnv1a,
   2554       _testhashu64_fnv1a,
   2555       _testarrayofbools,
   2556       _testf,
   2557       _testf2,
   2558       _testf3,
   2559       _testarrayofstring2,
   2560       _testarrayofsortedstruct,
   2561       _flex,
   2562       _test5,
   2563       _vector_of_longs,
   2564       _vector_of_doubles,
   2565       _parent_namespace_test,
   2566       _vector_of_referrables,
   2567       _single_weak_reference,
   2568       _vector_of_weak_references,
   2569       _vector_of_strong_referrables,
   2570       _co_owning_reference,
   2571       _vector_of_co_owning_references,
   2572       _non_owning_reference,
   2573       _vector_of_non_owning_references,
   2574       _any_unique_type,
   2575       _any_unique,
   2576       _any_ambiguous_type,
   2577       _any_ambiguous,
   2578       _vector_of_enums);
   2579 }
   2580 
   2581 inline TypeAliasesT *TypeAliases::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2582   auto _o = new TypeAliasesT();
   2583   UnPackTo(_o, _resolver);
   2584   return _o;
   2585 }
   2586 
   2587 inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2588   (void)_o;
   2589   (void)_resolver;
   2590   { auto _e = i8(); _o->i8 = _e; };
   2591   { auto _e = u8(); _o->u8 = _e; };
   2592   { auto _e = i16(); _o->i16 = _e; };
   2593   { auto _e = u16(); _o->u16 = _e; };
   2594   { auto _e = i32(); _o->i32 = _e; };
   2595   { auto _e = u32(); _o->u32 = _e; };
   2596   { auto _e = i64(); _o->i64 = _e; };
   2597   { auto _e = u64(); _o->u64 = _e; };
   2598   { auto _e = f32(); _o->f32 = _e; };
   2599   { auto _e = f64(); _o->f64 = _e; };
   2600   { auto _e = v8(); if (_e) { _o->v8.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->v8[_i] = _e->Get(_i); } } };
   2601   { auto _e = vf64(); if (_e) { _o->vf64.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vf64[_i] = _e->Get(_i); } } };
   2602 }
   2603 
   2604 inline flatbuffers::Offset<TypeAliases> TypeAliases::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2605   return CreateTypeAliases(_fbb, _o, _rehasher);
   2606 }
   2607 
   2608 inline flatbuffers::Offset<TypeAliases> CreateTypeAliases(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2609   (void)_rehasher;
   2610   (void)_o;
   2611   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TypeAliasesT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
   2612   auto _i8 = _o->i8;
   2613   auto _u8 = _o->u8;
   2614   auto _i16 = _o->i16;
   2615   auto _u16 = _o->u16;
   2616   auto _i32 = _o->i32;
   2617   auto _u32 = _o->u32;
   2618   auto _i64 = _o->i64;
   2619   auto _u64 = _o->u64;
   2620   auto _f32 = _o->f32;
   2621   auto _f64 = _o->f64;
   2622   auto _v8 = _o->v8.size() ? _fbb.CreateVector(_o->v8) : 0;
   2623   auto _vf64 = _o->vf64.size() ? _fbb.CreateVector(_o->vf64) : 0;
   2624   return MyGame::Example::CreateTypeAliases(
   2625       _fbb,
   2626       _i8,
   2627       _u8,
   2628       _i16,
   2629       _u16,
   2630       _i32,
   2631       _u32,
   2632       _i64,
   2633       _u64,
   2634       _f32,
   2635       _f64,
   2636       _v8,
   2637       _vf64);
   2638 }
   2639 
   2640 inline bool VerifyAny(flatbuffers::Verifier &verifier, const void *obj, Any type) {
   2641   switch (type) {
   2642     case Any_NONE: {
   2643       return true;
   2644     }
   2645     case Any_Monster: {
   2646       auto ptr = reinterpret_cast<const Monster *>(obj);
   2647       return verifier.VerifyTable(ptr);
   2648     }
   2649     case Any_TestSimpleTableWithEnum: {
   2650       auto ptr = reinterpret_cast<const TestSimpleTableWithEnum *>(obj);
   2651       return verifier.VerifyTable(ptr);
   2652     }
   2653     case Any_MyGame_Example2_Monster: {
   2654       auto ptr = reinterpret_cast<const MyGame::Example2::Monster *>(obj);
   2655       return verifier.VerifyTable(ptr);
   2656     }
   2657     default: return false;
   2658   }
   2659 }
   2660 
   2661 inline bool VerifyAnyVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
   2662   if (!values || !types) return !values && !types;
   2663   if (values->size() != types->size()) return false;
   2664   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
   2665     if (!VerifyAny(
   2666         verifier,  values->Get(i), types->GetEnum<Any>(i))) {
   2667       return false;
   2668     }
   2669   }
   2670   return true;
   2671 }
   2672 
   2673 inline void *AnyUnion::UnPack(const void *obj, Any type, const flatbuffers::resolver_function_t *resolver) {
   2674   switch (type) {
   2675     case Any_Monster: {
   2676       auto ptr = reinterpret_cast<const Monster *>(obj);
   2677       return ptr->UnPack(resolver);
   2678     }
   2679     case Any_TestSimpleTableWithEnum: {
   2680       auto ptr = reinterpret_cast<const TestSimpleTableWithEnum *>(obj);
   2681       return ptr->UnPack(resolver);
   2682     }
   2683     case Any_MyGame_Example2_Monster: {
   2684       auto ptr = reinterpret_cast<const MyGame::Example2::Monster *>(obj);
   2685       return ptr->UnPack(resolver);
   2686     }
   2687     default: return nullptr;
   2688   }
   2689 }
   2690 
   2691 inline flatbuffers::Offset<void> AnyUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
   2692   switch (type) {
   2693     case Any_Monster: {
   2694       auto ptr = reinterpret_cast<const MonsterT *>(value);
   2695       return CreateMonster(_fbb, ptr, _rehasher).Union();
   2696     }
   2697     case Any_TestSimpleTableWithEnum: {
   2698       auto ptr = reinterpret_cast<const TestSimpleTableWithEnumT *>(value);
   2699       return CreateTestSimpleTableWithEnum(_fbb, ptr, _rehasher).Union();
   2700     }
   2701     case Any_MyGame_Example2_Monster: {
   2702       auto ptr = reinterpret_cast<const MyGame::Example2::MonsterT *>(value);
   2703       return CreateMonster(_fbb, ptr, _rehasher).Union();
   2704     }
   2705     default: return 0;
   2706   }
   2707 }
   2708 
   2709 inline AnyUnion::AnyUnion(const AnyUnion &u) FLATBUFFERS_NOEXCEPT : type(u.type), value(nullptr) {
   2710   switch (type) {
   2711     case Any_Monster: {
   2712       FLATBUFFERS_ASSERT(false);  // MonsterT not copyable.
   2713       break;
   2714     }
   2715     case Any_TestSimpleTableWithEnum: {
   2716       value = new TestSimpleTableWithEnumT(*reinterpret_cast<TestSimpleTableWithEnumT *>(u.value));
   2717       break;
   2718     }
   2719     case Any_MyGame_Example2_Monster: {
   2720       value = new MyGame::Example2::MonsterT(*reinterpret_cast<MyGame::Example2::MonsterT *>(u.value));
   2721       break;
   2722     }
   2723     default:
   2724       break;
   2725   }
   2726 }
   2727 
   2728 inline void AnyUnion::Reset() {
   2729   switch (type) {
   2730     case Any_Monster: {
   2731       auto ptr = reinterpret_cast<MonsterT *>(value);
   2732       delete ptr;
   2733       break;
   2734     }
   2735     case Any_TestSimpleTableWithEnum: {
   2736       auto ptr = reinterpret_cast<TestSimpleTableWithEnumT *>(value);
   2737       delete ptr;
   2738       break;
   2739     }
   2740     case Any_MyGame_Example2_Monster: {
   2741       auto ptr = reinterpret_cast<MyGame::Example2::MonsterT *>(value);
   2742       delete ptr;
   2743       break;
   2744     }
   2745     default: break;
   2746   }
   2747   value = nullptr;
   2748   type = Any_NONE;
   2749 }
   2750 
   2751 inline bool VerifyAnyUniqueAliases(flatbuffers::Verifier &verifier, const void *obj, AnyUniqueAliases type) {
   2752   switch (type) {
   2753     case AnyUniqueAliases_NONE: {
   2754       return true;
   2755     }
   2756     case AnyUniqueAliases_M: {
   2757       auto ptr = reinterpret_cast<const Monster *>(obj);
   2758       return verifier.VerifyTable(ptr);
   2759     }
   2760     case AnyUniqueAliases_T: {
   2761       auto ptr = reinterpret_cast<const TestSimpleTableWithEnum *>(obj);
   2762       return verifier.VerifyTable(ptr);
   2763     }
   2764     case AnyUniqueAliases_M2: {
   2765       auto ptr = reinterpret_cast<const MyGame::Example2::Monster *>(obj);
   2766       return verifier.VerifyTable(ptr);
   2767     }
   2768     default: return false;
   2769   }
   2770 }
   2771 
   2772 inline bool VerifyAnyUniqueAliasesVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
   2773   if (!values || !types) return !values && !types;
   2774   if (values->size() != types->size()) return false;
   2775   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
   2776     if (!VerifyAnyUniqueAliases(
   2777         verifier,  values->Get(i), types->GetEnum<AnyUniqueAliases>(i))) {
   2778       return false;
   2779     }
   2780   }
   2781   return true;
   2782 }
   2783 
   2784 inline void *AnyUniqueAliasesUnion::UnPack(const void *obj, AnyUniqueAliases type, const flatbuffers::resolver_function_t *resolver) {
   2785   switch (type) {
   2786     case AnyUniqueAliases_M: {
   2787       auto ptr = reinterpret_cast<const Monster *>(obj);
   2788       return ptr->UnPack(resolver);
   2789     }
   2790     case AnyUniqueAliases_T: {
   2791       auto ptr = reinterpret_cast<const TestSimpleTableWithEnum *>(obj);
   2792       return ptr->UnPack(resolver);
   2793     }
   2794     case AnyUniqueAliases_M2: {
   2795       auto ptr = reinterpret_cast<const MyGame::Example2::Monster *>(obj);
   2796       return ptr->UnPack(resolver);
   2797     }
   2798     default: return nullptr;
   2799   }
   2800 }
   2801 
   2802 inline flatbuffers::Offset<void> AnyUniqueAliasesUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
   2803   switch (type) {
   2804     case AnyUniqueAliases_M: {
   2805       auto ptr = reinterpret_cast<const MonsterT *>(value);
   2806       return CreateMonster(_fbb, ptr, _rehasher).Union();
   2807     }
   2808     case AnyUniqueAliases_T: {
   2809       auto ptr = reinterpret_cast<const TestSimpleTableWithEnumT *>(value);
   2810       return CreateTestSimpleTableWithEnum(_fbb, ptr, _rehasher).Union();
   2811     }
   2812     case AnyUniqueAliases_M2: {
   2813       auto ptr = reinterpret_cast<const MyGame::Example2::MonsterT *>(value);
   2814       return CreateMonster(_fbb, ptr, _rehasher).Union();
   2815     }
   2816     default: return 0;
   2817   }
   2818 }
   2819 
   2820 inline AnyUniqueAliasesUnion::AnyUniqueAliasesUnion(const AnyUniqueAliasesUnion &u) FLATBUFFERS_NOEXCEPT : type(u.type), value(nullptr) {
   2821   switch (type) {
   2822     case AnyUniqueAliases_M: {
   2823       FLATBUFFERS_ASSERT(false);  // MonsterT not copyable.
   2824       break;
   2825     }
   2826     case AnyUniqueAliases_T: {
   2827       value = new TestSimpleTableWithEnumT(*reinterpret_cast<TestSimpleTableWithEnumT *>(u.value));
   2828       break;
   2829     }
   2830     case AnyUniqueAliases_M2: {
   2831       value = new MyGame::Example2::MonsterT(*reinterpret_cast<MyGame::Example2::MonsterT *>(u.value));
   2832       break;
   2833     }
   2834     default:
   2835       break;
   2836   }
   2837 }
   2838 
   2839 inline void AnyUniqueAliasesUnion::Reset() {
   2840   switch (type) {
   2841     case AnyUniqueAliases_M: {
   2842       auto ptr = reinterpret_cast<MonsterT *>(value);
   2843       delete ptr;
   2844       break;
   2845     }
   2846     case AnyUniqueAliases_T: {
   2847       auto ptr = reinterpret_cast<TestSimpleTableWithEnumT *>(value);
   2848       delete ptr;
   2849       break;
   2850     }
   2851     case AnyUniqueAliases_M2: {
   2852       auto ptr = reinterpret_cast<MyGame::Example2::MonsterT *>(value);
   2853       delete ptr;
   2854       break;
   2855     }
   2856     default: break;
   2857   }
   2858   value = nullptr;
   2859   type = AnyUniqueAliases_NONE;
   2860 }
   2861 
   2862 inline bool VerifyAnyAmbiguousAliases(flatbuffers::Verifier &verifier, const void *obj, AnyAmbiguousAliases type) {
   2863   switch (type) {
   2864     case AnyAmbiguousAliases_NONE: {
   2865       return true;
   2866     }
   2867     case AnyAmbiguousAliases_M1: {
   2868       auto ptr = reinterpret_cast<const Monster *>(obj);
   2869       return verifier.VerifyTable(ptr);
   2870     }
   2871     case AnyAmbiguousAliases_M2: {
   2872       auto ptr = reinterpret_cast<const Monster *>(obj);
   2873       return verifier.VerifyTable(ptr);
   2874     }
   2875     case AnyAmbiguousAliases_M3: {
   2876       auto ptr = reinterpret_cast<const Monster *>(obj);
   2877       return verifier.VerifyTable(ptr);
   2878     }
   2879     default: return false;
   2880   }
   2881 }
   2882 
   2883 inline bool VerifyAnyAmbiguousAliasesVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
   2884   if (!values || !types) return !values && !types;
   2885   if (values->size() != types->size()) return false;
   2886   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
   2887     if (!VerifyAnyAmbiguousAliases(
   2888         verifier,  values->Get(i), types->GetEnum<AnyAmbiguousAliases>(i))) {
   2889       return false;
   2890     }
   2891   }
   2892   return true;
   2893 }
   2894 
   2895 inline void *AnyAmbiguousAliasesUnion::UnPack(const void *obj, AnyAmbiguousAliases type, const flatbuffers::resolver_function_t *resolver) {
   2896   switch (type) {
   2897     case AnyAmbiguousAliases_M1: {
   2898       auto ptr = reinterpret_cast<const Monster *>(obj);
   2899       return ptr->UnPack(resolver);
   2900     }
   2901     case AnyAmbiguousAliases_M2: {
   2902       auto ptr = reinterpret_cast<const Monster *>(obj);
   2903       return ptr->UnPack(resolver);
   2904     }
   2905     case AnyAmbiguousAliases_M3: {
   2906       auto ptr = reinterpret_cast<const Monster *>(obj);
   2907       return ptr->UnPack(resolver);
   2908     }
   2909     default: return nullptr;
   2910   }
   2911 }
   2912 
   2913 inline flatbuffers::Offset<void> AnyAmbiguousAliasesUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
   2914   switch (type) {
   2915     case AnyAmbiguousAliases_M1: {
   2916       auto ptr = reinterpret_cast<const MonsterT *>(value);
   2917       return CreateMonster(_fbb, ptr, _rehasher).Union();
   2918     }
   2919     case AnyAmbiguousAliases_M2: {
   2920       auto ptr = reinterpret_cast<const MonsterT *>(value);
   2921       return CreateMonster(_fbb, ptr, _rehasher).Union();
   2922     }
   2923     case AnyAmbiguousAliases_M3: {
   2924       auto ptr = reinterpret_cast<const MonsterT *>(value);
   2925       return CreateMonster(_fbb, ptr, _rehasher).Union();
   2926     }
   2927     default: return 0;
   2928   }
   2929 }
   2930 
   2931 inline AnyAmbiguousAliasesUnion::AnyAmbiguousAliasesUnion(const AnyAmbiguousAliasesUnion &u) FLATBUFFERS_NOEXCEPT : type(u.type), value(nullptr) {
   2932   switch (type) {
   2933     case AnyAmbiguousAliases_M1: {
   2934       FLATBUFFERS_ASSERT(false);  // MonsterT not copyable.
   2935       break;
   2936     }
   2937     case AnyAmbiguousAliases_M2: {
   2938       FLATBUFFERS_ASSERT(false);  // MonsterT not copyable.
   2939       break;
   2940     }
   2941     case AnyAmbiguousAliases_M3: {
   2942       FLATBUFFERS_ASSERT(false);  // MonsterT not copyable.
   2943       break;
   2944     }
   2945     default:
   2946       break;
   2947   }
   2948 }
   2949 
   2950 inline void AnyAmbiguousAliasesUnion::Reset() {
   2951   switch (type) {
   2952     case AnyAmbiguousAliases_M1: {
   2953       auto ptr = reinterpret_cast<MonsterT *>(value);
   2954       delete ptr;
   2955       break;
   2956     }
   2957     case AnyAmbiguousAliases_M2: {
   2958       auto ptr = reinterpret_cast<MonsterT *>(value);
   2959       delete ptr;
   2960       break;
   2961     }
   2962     case AnyAmbiguousAliases_M3: {
   2963       auto ptr = reinterpret_cast<MonsterT *>(value);
   2964       delete ptr;
   2965       break;
   2966     }
   2967     default: break;
   2968   }
   2969   value = nullptr;
   2970   type = AnyAmbiguousAliases_NONE;
   2971 }
   2972 
   2973 inline const flatbuffers::TypeTable *ColorTypeTable() {
   2974   static const flatbuffers::TypeCode type_codes[] = {
   2975     { flatbuffers::ET_CHAR, 0, 0 },
   2976     { flatbuffers::ET_CHAR, 0, 0 },
   2977     { flatbuffers::ET_CHAR, 0, 0 }
   2978   };
   2979   static const flatbuffers::TypeFunction type_refs[] = {
   2980     ColorTypeTable
   2981   };
   2982   static const int64_t values[] = { 1, 2, 8 };
   2983   static const char * const names[] = {
   2984     "Red",
   2985     "Green",
   2986     "Blue"
   2987   };
   2988   static const flatbuffers::TypeTable tt = {
   2989     flatbuffers::ST_ENUM, 3, type_codes, type_refs, values, names
   2990   };
   2991   return &tt;
   2992 }
   2993 
   2994 inline const flatbuffers::TypeTable *AnyTypeTable() {
   2995   static const flatbuffers::TypeCode type_codes[] = {
   2996     { flatbuffers::ET_SEQUENCE, 0, -1 },
   2997     { flatbuffers::ET_SEQUENCE, 0, 0 },
   2998     { flatbuffers::ET_SEQUENCE, 0, 1 },
   2999     { flatbuffers::ET_SEQUENCE, 0, 2 }
   3000   };
   3001   static const flatbuffers::TypeFunction type_refs[] = {
   3002     MonsterTypeTable,
   3003     TestSimpleTableWithEnumTypeTable,
   3004     MyGame::Example2::MonsterTypeTable
   3005   };
   3006   static const char * const names[] = {
   3007     "NONE",
   3008     "Monster",
   3009     "TestSimpleTableWithEnum",
   3010     "MyGame_Example2_Monster"
   3011   };
   3012   static const flatbuffers::TypeTable tt = {
   3013     flatbuffers::ST_UNION, 4, type_codes, type_refs, nullptr, names
   3014   };
   3015   return &tt;
   3016 }
   3017 
   3018 inline const flatbuffers::TypeTable *AnyUniqueAliasesTypeTable() {
   3019   static const flatbuffers::TypeCode type_codes[] = {
   3020     { flatbuffers::ET_SEQUENCE, 0, -1 },
   3021     { flatbuffers::ET_SEQUENCE, 0, 0 },
   3022     { flatbuffers::ET_SEQUENCE, 0, 1 },
   3023     { flatbuffers::ET_SEQUENCE, 0, 2 }
   3024   };
   3025   static const flatbuffers::TypeFunction type_refs[] = {
   3026     MonsterTypeTable,
   3027     TestSimpleTableWithEnumTypeTable,
   3028     MyGame::Example2::MonsterTypeTable
   3029   };
   3030   static const char * const names[] = {
   3031     "NONE",
   3032     "M",
   3033     "T",
   3034     "M2"
   3035   };
   3036   static const flatbuffers::TypeTable tt = {
   3037     flatbuffers::ST_UNION, 4, type_codes, type_refs, nullptr, names
   3038   };
   3039   return &tt;
   3040 }
   3041 
   3042 inline const flatbuffers::TypeTable *AnyAmbiguousAliasesTypeTable() {
   3043   static const flatbuffers::TypeCode type_codes[] = {
   3044     { flatbuffers::ET_SEQUENCE, 0, -1 },
   3045     { flatbuffers::ET_SEQUENCE, 0, 0 },
   3046     { flatbuffers::ET_SEQUENCE, 0, 0 },
   3047     { flatbuffers::ET_SEQUENCE, 0, 0 }
   3048   };
   3049   static const flatbuffers::TypeFunction type_refs[] = {
   3050     MonsterTypeTable
   3051   };
   3052   static const char * const names[] = {
   3053     "NONE",
   3054     "M1",
   3055     "M2",
   3056     "M3"
   3057   };
   3058   static const flatbuffers::TypeTable tt = {
   3059     flatbuffers::ST_UNION, 4, type_codes, type_refs, nullptr, names
   3060   };
   3061   return &tt;
   3062 }
   3063 
   3064 }  // namespace Example
   3065 
   3066 inline const flatbuffers::TypeTable *InParentNamespaceTypeTable() {
   3067   static const flatbuffers::TypeTable tt = {
   3068     flatbuffers::ST_TABLE, 0, nullptr, nullptr, nullptr, nullptr
   3069   };
   3070   return &tt;
   3071 }
   3072 
   3073 namespace Example2 {
   3074 
   3075 inline const flatbuffers::TypeTable *MonsterTypeTable() {
   3076   static const flatbuffers::TypeTable tt = {
   3077     flatbuffers::ST_TABLE, 0, nullptr, nullptr, nullptr, nullptr
   3078   };
   3079   return &tt;
   3080 }
   3081 
   3082 }  // namespace Example2
   3083 
   3084 namespace Example {
   3085 
   3086 inline const flatbuffers::TypeTable *TestTypeTable() {
   3087   static const flatbuffers::TypeCode type_codes[] = {
   3088     { flatbuffers::ET_SHORT, 0, -1 },
   3089     { flatbuffers::ET_CHAR, 0, -1 }
   3090   };
   3091   static const int64_t values[] = { 0, 2, 4 };
   3092   static const char * const names[] = {
   3093     "a",
   3094     "b"
   3095   };
   3096   static const flatbuffers::TypeTable tt = {
   3097     flatbuffers::ST_STRUCT, 2, type_codes, nullptr, values, names
   3098   };
   3099   return &tt;
   3100 }
   3101 
   3102 inline const flatbuffers::TypeTable *TestSimpleTableWithEnumTypeTable() {
   3103   static const flatbuffers::TypeCode type_codes[] = {
   3104     { flatbuffers::ET_CHAR, 0, 0 }
   3105   };
   3106   static const flatbuffers::TypeFunction type_refs[] = {
   3107     ColorTypeTable
   3108   };
   3109   static const char * const names[] = {
   3110     "color"
   3111   };
   3112   static const flatbuffers::TypeTable tt = {
   3113     flatbuffers::ST_TABLE, 1, type_codes, type_refs, nullptr, names
   3114   };
   3115   return &tt;
   3116 }
   3117 
   3118 inline const flatbuffers::TypeTable *Vec3TypeTable() {
   3119   static const flatbuffers::TypeCode type_codes[] = {
   3120     { flatbuffers::ET_FLOAT, 0, -1 },
   3121     { flatbuffers::ET_FLOAT, 0, -1 },
   3122     { flatbuffers::ET_FLOAT, 0, -1 },
   3123     { flatbuffers::ET_DOUBLE, 0, -1 },
   3124     { flatbuffers::ET_CHAR, 0, 0 },
   3125     { flatbuffers::ET_SEQUENCE, 0, 1 }
   3126   };
   3127   static const flatbuffers::TypeFunction type_refs[] = {
   3128     ColorTypeTable,
   3129     TestTypeTable
   3130   };
   3131   static const int64_t values[] = { 0, 4, 8, 16, 24, 26, 32 };
   3132   static const char * const names[] = {
   3133     "x",
   3134     "y",
   3135     "z",
   3136     "test1",
   3137     "test2",
   3138     "test3"
   3139   };
   3140   static const flatbuffers::TypeTable tt = {
   3141     flatbuffers::ST_STRUCT, 6, type_codes, type_refs, values, names
   3142   };
   3143   return &tt;
   3144 }
   3145 
   3146 inline const flatbuffers::TypeTable *AbilityTypeTable() {
   3147   static const flatbuffers::TypeCode type_codes[] = {
   3148     { flatbuffers::ET_UINT, 0, -1 },
   3149     { flatbuffers::ET_UINT, 0, -1 }
   3150   };
   3151   static const int64_t values[] = { 0, 4, 8 };
   3152   static const char * const names[] = {
   3153     "id",
   3154     "distance"
   3155   };
   3156   static const flatbuffers::TypeTable tt = {
   3157     flatbuffers::ST_STRUCT, 2, type_codes, nullptr, values, names
   3158   };
   3159   return &tt;
   3160 }
   3161 
   3162 inline const flatbuffers::TypeTable *StatTypeTable() {
   3163   static const flatbuffers::TypeCode type_codes[] = {
   3164     { flatbuffers::ET_STRING, 0, -1 },
   3165     { flatbuffers::ET_LONG, 0, -1 },
   3166     { flatbuffers::ET_USHORT, 0, -1 }
   3167   };
   3168   static const char * const names[] = {
   3169     "id",
   3170     "val",
   3171     "count"
   3172   };
   3173   static const flatbuffers::TypeTable tt = {
   3174     flatbuffers::ST_TABLE, 3, type_codes, nullptr, nullptr, names
   3175   };
   3176   return &tt;
   3177 }
   3178 
   3179 inline const flatbuffers::TypeTable *ReferrableTypeTable() {
   3180   static const flatbuffers::TypeCode type_codes[] = {
   3181     { flatbuffers::ET_ULONG, 0, -1 }
   3182   };
   3183   static const char * const names[] = {
   3184     "id"
   3185   };
   3186   static const flatbuffers::TypeTable tt = {
   3187     flatbuffers::ST_TABLE, 1, type_codes, nullptr, nullptr, names
   3188   };
   3189   return &tt;
   3190 }
   3191 
   3192 inline const flatbuffers::TypeTable *MonsterTypeTable() {
   3193   static const flatbuffers::TypeCode type_codes[] = {
   3194     { flatbuffers::ET_SEQUENCE, 0, 0 },
   3195     { flatbuffers::ET_SHORT, 0, -1 },
   3196     { flatbuffers::ET_SHORT, 0, -1 },
   3197     { flatbuffers::ET_STRING, 0, -1 },
   3198     { flatbuffers::ET_BOOL, 0, -1 },
   3199     { flatbuffers::ET_UCHAR, 1, -1 },
   3200     { flatbuffers::ET_CHAR, 0, 1 },
   3201     { flatbuffers::ET_UTYPE, 0, 2 },
   3202     { flatbuffers::ET_SEQUENCE, 0, 2 },
   3203     { flatbuffers::ET_SEQUENCE, 1, 3 },
   3204     { flatbuffers::ET_STRING, 1, -1 },
   3205     { flatbuffers::ET_SEQUENCE, 1, 4 },
   3206     { flatbuffers::ET_SEQUENCE, 0, 4 },
   3207     { flatbuffers::ET_UCHAR, 1, -1 },
   3208     { flatbuffers::ET_SEQUENCE, 0, 5 },
   3209     { flatbuffers::ET_BOOL, 0, -1 },
   3210     { flatbuffers::ET_INT, 0, -1 },
   3211     { flatbuffers::ET_UINT, 0, -1 },
   3212     { flatbuffers::ET_LONG, 0, -1 },
   3213     { flatbuffers::ET_ULONG, 0, -1 },
   3214     { flatbuffers::ET_INT, 0, -1 },
   3215     { flatbuffers::ET_UINT, 0, -1 },
   3216     { flatbuffers::ET_LONG, 0, -1 },
   3217     { flatbuffers::ET_ULONG, 0, -1 },
   3218     { flatbuffers::ET_BOOL, 1, -1 },
   3219     { flatbuffers::ET_FLOAT, 0, -1 },
   3220     { flatbuffers::ET_FLOAT, 0, -1 },
   3221     { flatbuffers::ET_FLOAT, 0, -1 },
   3222     { flatbuffers::ET_STRING, 1, -1 },
   3223     { flatbuffers::ET_SEQUENCE, 1, 6 },
   3224     { flatbuffers::ET_UCHAR, 1, -1 },
   3225     { flatbuffers::ET_SEQUENCE, 1, 3 },
   3226     { flatbuffers::ET_LONG, 1, -1 },
   3227     { flatbuffers::ET_DOUBLE, 1, -1 },
   3228     { flatbuffers::ET_SEQUENCE, 0, 7 },
   3229     { flatbuffers::ET_SEQUENCE, 1, 8 },
   3230     { flatbuffers::ET_ULONG, 0, -1 },
   3231     { flatbuffers::ET_ULONG, 1, -1 },
   3232     { flatbuffers::ET_SEQUENCE, 1, 8 },
   3233     { flatbuffers::ET_ULONG, 0, -1 },
   3234     { flatbuffers::ET_ULONG, 1, -1 },
   3235     { flatbuffers::ET_ULONG, 0, -1 },
   3236     { flatbuffers::ET_ULONG, 1, -1 },
   3237     { flatbuffers::ET_UTYPE, 0, 9 },
   3238     { flatbuffers::ET_SEQUENCE, 0, 9 },
   3239     { flatbuffers::ET_UTYPE, 0, 10 },
   3240     { flatbuffers::ET_SEQUENCE, 0, 10 },
   3241     { flatbuffers::ET_CHAR, 1, 1 }
   3242   };
   3243   static const flatbuffers::TypeFunction type_refs[] = {
   3244     Vec3TypeTable,
   3245     ColorTypeTable,
   3246     AnyTypeTable,
   3247     TestTypeTable,
   3248     MonsterTypeTable,
   3249     StatTypeTable,
   3250     AbilityTypeTable,
   3251     MyGame::InParentNamespaceTypeTable,
   3252     ReferrableTypeTable,
   3253     AnyUniqueAliasesTypeTable,
   3254     AnyAmbiguousAliasesTypeTable
   3255   };
   3256   static const char * const names[] = {
   3257     "pos",
   3258     "mana",
   3259     "hp",
   3260     "name",
   3261     "friendly",
   3262     "inventory",
   3263     "color",
   3264     "test_type",
   3265     "test",
   3266     "test4",
   3267     "testarrayofstring",
   3268     "testarrayoftables",
   3269     "enemy",
   3270     "testnestedflatbuffer",
   3271     "testempty",
   3272     "testbool",
   3273     "testhashs32_fnv1",
   3274     "testhashu32_fnv1",
   3275     "testhashs64_fnv1",
   3276     "testhashu64_fnv1",
   3277     "testhashs32_fnv1a",
   3278     "testhashu32_fnv1a",
   3279     "testhashs64_fnv1a",
   3280     "testhashu64_fnv1a",
   3281     "testarrayofbools",
   3282     "testf",
   3283     "testf2",
   3284     "testf3",
   3285     "testarrayofstring2",
   3286     "testarrayofsortedstruct",
   3287     "flex",
   3288     "test5",
   3289     "vector_of_longs",
   3290     "vector_of_doubles",
   3291     "parent_namespace_test",
   3292     "vector_of_referrables",
   3293     "single_weak_reference",
   3294     "vector_of_weak_references",
   3295     "vector_of_strong_referrables",
   3296     "co_owning_reference",
   3297     "vector_of_co_owning_references",
   3298     "non_owning_reference",
   3299     "vector_of_non_owning_references",
   3300     "any_unique_type",
   3301     "any_unique",
   3302     "any_ambiguous_type",
   3303     "any_ambiguous",
   3304     "vector_of_enums"
   3305   };
   3306   static const flatbuffers::TypeTable tt = {
   3307     flatbuffers::ST_TABLE, 48, type_codes, type_refs, nullptr, names
   3308   };
   3309   return &tt;
   3310 }
   3311 
   3312 inline const flatbuffers::TypeTable *TypeAliasesTypeTable() {
   3313   static const flatbuffers::TypeCode type_codes[] = {
   3314     { flatbuffers::ET_CHAR, 0, -1 },
   3315     { flatbuffers::ET_UCHAR, 0, -1 },
   3316     { flatbuffers::ET_SHORT, 0, -1 },
   3317     { flatbuffers::ET_USHORT, 0, -1 },
   3318     { flatbuffers::ET_INT, 0, -1 },
   3319     { flatbuffers::ET_UINT, 0, -1 },
   3320     { flatbuffers::ET_LONG, 0, -1 },
   3321     { flatbuffers::ET_ULONG, 0, -1 },
   3322     { flatbuffers::ET_FLOAT, 0, -1 },
   3323     { flatbuffers::ET_DOUBLE, 0, -1 },
   3324     { flatbuffers::ET_CHAR, 1, -1 },
   3325     { flatbuffers::ET_DOUBLE, 1, -1 }
   3326   };
   3327   static const char * const names[] = {
   3328     "i8",
   3329     "u8",
   3330     "i16",
   3331     "u16",
   3332     "i32",
   3333     "u32",
   3334     "i64",
   3335     "u64",
   3336     "f32",
   3337     "f64",
   3338     "v8",
   3339     "vf64"
   3340   };
   3341   static const flatbuffers::TypeTable tt = {
   3342     flatbuffers::ST_TABLE, 12, type_codes, nullptr, nullptr, names
   3343   };
   3344   return &tt;
   3345 }
   3346 
   3347 inline const MyGame::Example::Monster *GetMonster(const void *buf) {
   3348   return flatbuffers::GetRoot<MyGame::Example::Monster>(buf);
   3349 }
   3350 
   3351 inline const MyGame::Example::Monster *GetSizePrefixedMonster(const void *buf) {
   3352   return flatbuffers::GetSizePrefixedRoot<MyGame::Example::Monster>(buf);
   3353 }
   3354 
   3355 inline Monster *GetMutableMonster(void *buf) {
   3356   return flatbuffers::GetMutableRoot<Monster>(buf);
   3357 }
   3358 
   3359 inline const char *MonsterIdentifier() {
   3360   return "MONS";
   3361 }
   3362 
   3363 inline bool MonsterBufferHasIdentifier(const void *buf) {
   3364   return flatbuffers::BufferHasIdentifier(
   3365       buf, MonsterIdentifier());
   3366 }
   3367 
   3368 inline bool VerifyMonsterBuffer(
   3369     flatbuffers::Verifier &verifier) {
   3370   return verifier.VerifyBuffer<MyGame::Example::Monster>(MonsterIdentifier());
   3371 }
   3372 
   3373 inline bool VerifySizePrefixedMonsterBuffer(
   3374     flatbuffers::Verifier &verifier) {
   3375   return verifier.VerifySizePrefixedBuffer<MyGame::Example::Monster>(MonsterIdentifier());
   3376 }
   3377 
   3378 inline const char *MonsterExtension() {
   3379   return "mon";
   3380 }
   3381 
   3382 inline void FinishMonsterBuffer(
   3383     flatbuffers::FlatBufferBuilder &fbb,
   3384     flatbuffers::Offset<MyGame::Example::Monster> root) {
   3385   fbb.Finish(root, MonsterIdentifier());
   3386 }
   3387 
   3388 inline void FinishSizePrefixedMonsterBuffer(
   3389     flatbuffers::FlatBufferBuilder &fbb,
   3390     flatbuffers::Offset<MyGame::Example::Monster> root) {
   3391   fbb.FinishSizePrefixed(root, MonsterIdentifier());
   3392 }
   3393 
   3394 inline flatbuffers::unique_ptr<MonsterT> UnPackMonster(
   3395     const void *buf,
   3396     const flatbuffers::resolver_function_t *res = nullptr) {
   3397   return flatbuffers::unique_ptr<MonsterT>(GetMonster(buf)->UnPack(res));
   3398 }
   3399 
   3400 }  // namespace Example
   3401 }  // namespace MyGame
   3402 
   3403 #endif  // FLATBUFFERS_GENERATED_MONSTERTEST_MYGAME_EXAMPLE_H_
   3404