Squashed 'third_party/flatbuffers/' changes from bc44fad35..8aa8b9139

8aa8b9139 Fix handling of +/-inf defaults in TS/rust/go/dart codegen (#7588)
001adf782 Add support for parsing proto map fields (#7613)
dbc58ab77 Fix help output for --gen-includes (#7611)
2facfeec7 Fix missing spaces in flatc help text (#7612)
4de2814c7 Fix: arduino platform build (#7625)
37b1acdaf Fix current official name of macOS (#7627)
a22434e2a Add missing #include <algorithm> for std::min/std::max uses, and #include <limits> for std::numeric_limits<> (#7624)
214cc9468 Bump Rust version to 22.10.26 before publication (#7622)
a4ff275d9 Added option to not requires an EoF token when parsing JSON (#7620)
15f32c690 python: object generation prefix and suffix (#7565)
051afd882 Add CreateSharedString to python builder (#7608)
728c033ad Add check for presence of realpath to CMakeLists.txt to support more platforms (#7603)
4c514483d Update DartTest.sh golden files (#7606)
c2d9c2080 [TS] Add support for fixed length arrays on Typescript (#5864) (#7021) (#7581)
e34ae4c6b `build.yml`: Fix missing 'v' in version
e54536127 `build.yml` Update to Kotlin Wrapper 1.0.5
49d9f941c `release.yml` Use env var for passphrase
cefc21c1f `release.yml` Add GPG key for Maven
3e64fa724 `release.yml`: Add Maven Steps
b15f3c57e `release_yml` Use new dotnet version
ff802c680 `release.yml` Use NuGet Key directly
b401957d5 `release.yml` Changed Push to follow examples
8c8151f8f `release.yml` Fix nuget push command
ebb7c203d `release.yml` Add Nuget support
203241ed3 FlatBuffers Version 22.10.26 (#7607)
ac485609c `setup.py`: Define version directly
de5b85aa6 `release.yml`: Switch to `python` directory
de3df2d88 `release.yml`: Add publishing to PyPi
043a24f2e [Python] Fixed the issue with nested unions relying on InitFromBuf. (#7576)
5a48b0d7d release.yml: Typo
ce307556f release.yml: Remove `npm ci`
cb616e27c Create release.yml (#7605)
a54ca1e75 FlatBuffers Version 22.10.25 (#7604)
5b3fadcc1 [vector] Allow to iterate with mutables (#7586)
872a49746 [Nim] Bfbs Nim Generator (#7534)
e30170296 Make type conversions explicit. (#7595)
f7b734438 Fix LongEnum definitions (#7596)
5792623df Rust fix compilation for no_std targets #2 (#7553)
0edb27528 Update Rust version (#7574)
acc6a20d3 tests/test.cpp contains a couple of tests that are only executed (#7571)
04cd037ba Fix #7580 by documenting union schema evolution rules (#7585)
e1c5db988 Turn on clippy for Rust and fix lints for non-generated code (#7575)
b80142b90 Update documentation to mention enum value attributes (#7570)
54418f371 Add support for metadata attributes for enum values (#7567) (#7568)
c92e78a9f FlatBuffers Version 22.9.29 (#7557)
d243b904c [TS] Make strict compliant and improve typings (#7549)
374f8fb5f Rust soundness fixes (#7518)
dadbff571 Moves swift package to root of repository so it can be used directly … (#7548)
76ddae006 FlatBuffers Version 22.9.24 (#7547)
cfe157ec5 Emit internal enums when swift_implementation_only (#7545)
413115858 [Python] Python fixed size array (#7529)
88046190e Upgrade grpc to 1.49.0 and make sure it builds (#7538)
72aa85a75 [C++] Rare bad buffer content alignment if sizeof(T) != alignof(T) (#7520)
bfceebb7f Fix conform (#7532)

git-subtree-dir: third_party/flatbuffers
git-subtree-split: 8aa8b9139eb330f27816a5b8b5bbef402fbe3632
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
Change-Id: I943faba499baf58e9f561b1e4734922188ba8626
diff --git a/tests/MyGame/Example/Monster.nim b/tests/MyGame/Example/Monster.nim
new file mode 100644
index 0000000..283e01a
--- /dev/null
+++ b/tests/MyGame/Example/Monster.nim
@@ -0,0 +1,734 @@
+#[ MyGame.Example.Monster
+  Automatically generated by the FlatBuffers compiler, do not modify.
+  Or modify. I'm a message, not a cop.
+
+  flatc version: 22.10.26
+
+  Declared by  : 
+  Rooting type : MyGame.Example.Monster ()
+]#
+
+import ../InParentNamespace as MyGame_InParentNamespace
+import Ability as MyGame_Example_Ability
+import Any as MyGame_Example_Any
+import AnyAmbiguousAliases as MyGame_Example_AnyAmbiguousAliases
+import AnyUniqueAliases as MyGame_Example_AnyUniqueAliases
+import Color as MyGame_Example_Color
+import LongEnum as MyGame_Example_LongEnum
+import Race as MyGame_Example_Race
+import Referrable as MyGame_Example_Referrable
+import Stat as MyGame_Example_Stat
+import Test as MyGame_Example_Test
+import Vec3 as MyGame_Example_Vec3
+import flatbuffers
+import std/options
+
+#  an example documentation comment: "monster object"
+type Monster* = object of FlatObj
+func pos*(self: Monster): Option[MyGame_Example_Vec3.Vec3] =
+  let o = self.tab.Offset(4)
+  if o != 0:
+    return some(MyGame_Example_Vec3.Vec3(tab: Vtable(Bytes: self.tab.Bytes, Pos: self.tab.Pos + o)))
+func mana*(self: Monster): int16 =
+  let o = self.tab.Offset(6)
+  if o != 0:
+    return Get[int16](self.tab, self.tab.Pos + o)
+  return 150
+func `mana=`*(self: var Monster, n: int16): bool =
+  return self.tab.MutateSlot(6, n)
+func hp*(self: Monster): int16 =
+  let o = self.tab.Offset(8)
+  if o != 0:
+    return Get[int16](self.tab, self.tab.Pos + o)
+  return 100
+func `hp=`*(self: var Monster, n: int16): bool =
+  return self.tab.MutateSlot(8, n)
+func name*(self: Monster): string =
+  let o = self.tab.Offset(10)
+  if o != 0:
+    return self.tab.String(self.tab.Pos + o)
+  return ""
+func inventoryLength*(self: Monster): int = 
+  let o = self.tab.Offset(14)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func inventory*(self: Monster, j: int): uint8 = 
+  let o = self.tab.Offset(14)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 1.uoffset
+    return Get[uint8](self.tab, x)
+func inventory*(self: Monster): seq[uint8] = 
+  let len = self.inventoryLength
+  for i in countup(0, len - 1):
+    result.add(self.inventory(i))
+func color*(self: Monster): MyGame_Example_Color.Color =
+  let o = self.tab.Offset(16)
+  if o != 0:
+    return MyGame_Example_Color.Color(Get[uint8](self.tab, self.tab.Pos + o))
+  return type(result)(8)
+func `color=`*(self: var Monster, n: MyGame_Example_Color.Color): bool =
+  return self.tab.MutateSlot(16, n)
+func testType*(self: Monster): MyGame_Example_Any.Any =
+  let o = self.tab.Offset(18)
+  if o != 0:
+    return MyGame_Example_Any.Any(Get[uint8](self.tab, self.tab.Pos + o))
+  return type(result)(0)
+func `testType=`*(self: var Monster, n: MyGame_Example_Any.Any): bool =
+  return self.tab.MutateSlot(18, n)
+func test*(self: Monster): Option[Vtable] =
+  let o = self.tab.Offset(20)
+  if o != 0:
+    return some(self.tab.Union(o))
+func test4Length*(self: Monster): int = 
+  let o = self.tab.Offset(22)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func test4*(self: Monster, j: int): MyGame_Example_Test.Test = 
+  let o = self.tab.Offset(22)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 4.uoffset
+    return MyGame_Example_Test.Test(tab: Vtable(Bytes: self.tab.Bytes, Pos: x))
+func test4*(self: Monster): seq[MyGame_Example_Test.Test] = 
+  let len = self.test4Length
+  for i in countup(0, len - 1):
+    result.add(self.test4(i))
+func testarrayofstringLength*(self: Monster): int = 
+  let o = self.tab.Offset(24)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func testarrayofstring*(self: Monster, j: int): string = 
+  let o = self.tab.Offset(24)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 4.uoffset
+    return self.tab.String(x)
+func testarrayofstring*(self: Monster): seq[string] = 
+  let len = self.testarrayofstringLength
+  for i in countup(0, len - 1):
+    result.add(self.testarrayofstring(i))
+func testarrayoftablesLength*(self: Monster): int = 
+  let o = self.tab.Offset(26)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func testarrayoftables*(self: Monster, j: int): Monster = 
+  let o = self.tab.Offset(26)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 4.uoffset
+    return Monster(tab: Vtable(Bytes: self.tab.Bytes, Pos: x))
+func testarrayoftables*(self: Monster): seq[Monster] = 
+  let len = self.testarrayoftablesLength
+  for i in countup(0, len - 1):
+    result.add(self.testarrayoftables(i))
+func enemy*(self: Monster): Option[Monster] =
+  let o = self.tab.Offset(28)
+  if o != 0:
+    return some(Monster(tab: Vtable(Bytes: self.tab.Bytes, Pos: self.tab.Pos + o)))
+func testnestedflatbufferLength*(self: Monster): int = 
+  let o = self.tab.Offset(30)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func testnestedflatbuffer*(self: Monster, j: int): uint8 = 
+  let o = self.tab.Offset(30)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 1.uoffset
+    return Get[uint8](self.tab, x)
+func testnestedflatbuffer*(self: Monster): seq[uint8] = 
+  let len = self.testnestedflatbufferLength
+  for i in countup(0, len - 1):
+    result.add(self.testnestedflatbuffer(i))
+func testempty*(self: Monster): Option[MyGame_Example_Stat.Stat] =
+  let o = self.tab.Offset(32)
+  if o != 0:
+    return some(MyGame_Example_Stat.Stat(tab: Vtable(Bytes: self.tab.Bytes, Pos: self.tab.Pos + o)))
+func testbool*(self: Monster): bool =
+  let o = self.tab.Offset(34)
+  if o != 0:
+    return Get[bool](self.tab, self.tab.Pos + o)
+  return false
+func `testbool=`*(self: var Monster, n: bool): bool =
+  return self.tab.MutateSlot(34, n)
+func testhashs32Fnv1*(self: Monster): int32 =
+  let o = self.tab.Offset(36)
+  if o != 0:
+    return Get[int32](self.tab, self.tab.Pos + o)
+  return 0
+func `testhashs32Fnv1=`*(self: var Monster, n: int32): bool =
+  return self.tab.MutateSlot(36, n)
+func testhashu32Fnv1*(self: Monster): uint32 =
+  let o = self.tab.Offset(38)
+  if o != 0:
+    return Get[uint32](self.tab, self.tab.Pos + o)
+  return 0
+func `testhashu32Fnv1=`*(self: var Monster, n: uint32): bool =
+  return self.tab.MutateSlot(38, n)
+func testhashs64Fnv1*(self: Monster): int64 =
+  let o = self.tab.Offset(40)
+  if o != 0:
+    return Get[int64](self.tab, self.tab.Pos + o)
+  return 0
+func `testhashs64Fnv1=`*(self: var Monster, n: int64): bool =
+  return self.tab.MutateSlot(40, n)
+func testhashu64Fnv1*(self: Monster): uint64 =
+  let o = self.tab.Offset(42)
+  if o != 0:
+    return Get[uint64](self.tab, self.tab.Pos + o)
+  return 0
+func `testhashu64Fnv1=`*(self: var Monster, n: uint64): bool =
+  return self.tab.MutateSlot(42, n)
+func testhashs32Fnv1a*(self: Monster): int32 =
+  let o = self.tab.Offset(44)
+  if o != 0:
+    return Get[int32](self.tab, self.tab.Pos + o)
+  return 0
+func `testhashs32Fnv1a=`*(self: var Monster, n: int32): bool =
+  return self.tab.MutateSlot(44, n)
+func testhashu32Fnv1a*(self: Monster): uint32 =
+  let o = self.tab.Offset(46)
+  if o != 0:
+    return Get[uint32](self.tab, self.tab.Pos + o)
+  return 0
+func `testhashu32Fnv1a=`*(self: var Monster, n: uint32): bool =
+  return self.tab.MutateSlot(46, n)
+func testhashs64Fnv1a*(self: Monster): int64 =
+  let o = self.tab.Offset(48)
+  if o != 0:
+    return Get[int64](self.tab, self.tab.Pos + o)
+  return 0
+func `testhashs64Fnv1a=`*(self: var Monster, n: int64): bool =
+  return self.tab.MutateSlot(48, n)
+func testhashu64Fnv1a*(self: Monster): uint64 =
+  let o = self.tab.Offset(50)
+  if o != 0:
+    return Get[uint64](self.tab, self.tab.Pos + o)
+  return 0
+func `testhashu64Fnv1a=`*(self: var Monster, n: uint64): bool =
+  return self.tab.MutateSlot(50, n)
+func testarrayofboolsLength*(self: Monster): int = 
+  let o = self.tab.Offset(52)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func testarrayofbools*(self: Monster, j: int): bool = 
+  let o = self.tab.Offset(52)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 1.uoffset
+    return Get[bool](self.tab, x)
+func testarrayofbools*(self: Monster): seq[bool] = 
+  let len = self.testarrayofboolsLength
+  for i in countup(0, len - 1):
+    result.add(self.testarrayofbools(i))
+func testf*(self: Monster): float32 =
+  let o = self.tab.Offset(54)
+  if o != 0:
+    return Get[float32](self.tab, self.tab.Pos + o)
+  return 3.14159
+func `testf=`*(self: var Monster, n: float32): bool =
+  return self.tab.MutateSlot(54, n)
+func testf2*(self: Monster): float32 =
+  let o = self.tab.Offset(56)
+  if o != 0:
+    return Get[float32](self.tab, self.tab.Pos + o)
+  return 3.0
+func `testf2=`*(self: var Monster, n: float32): bool =
+  return self.tab.MutateSlot(56, n)
+func testf3*(self: Monster): float32 =
+  let o = self.tab.Offset(58)
+  if o != 0:
+    return Get[float32](self.tab, self.tab.Pos + o)
+  return 0.0
+func `testf3=`*(self: var Monster, n: float32): bool =
+  return self.tab.MutateSlot(58, n)
+func testarrayofstring2Length*(self: Monster): int = 
+  let o = self.tab.Offset(60)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func testarrayofstring2*(self: Monster, j: int): string = 
+  let o = self.tab.Offset(60)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 4.uoffset
+    return self.tab.String(x)
+func testarrayofstring2*(self: Monster): seq[string] = 
+  let len = self.testarrayofstring2Length
+  for i in countup(0, len - 1):
+    result.add(self.testarrayofstring2(i))
+func testarrayofsortedstructLength*(self: Monster): int = 
+  let o = self.tab.Offset(62)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func testarrayofsortedstruct*(self: Monster, j: int): MyGame_Example_Ability.Ability = 
+  let o = self.tab.Offset(62)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 8.uoffset
+    return MyGame_Example_Ability.Ability(tab: Vtable(Bytes: self.tab.Bytes, Pos: x))
+func testarrayofsortedstruct*(self: Monster): seq[MyGame_Example_Ability.Ability] = 
+  let len = self.testarrayofsortedstructLength
+  for i in countup(0, len - 1):
+    result.add(self.testarrayofsortedstruct(i))
+func flexLength*(self: Monster): int = 
+  let o = self.tab.Offset(64)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func flex*(self: Monster, j: int): uint8 = 
+  let o = self.tab.Offset(64)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 1.uoffset
+    return Get[uint8](self.tab, x)
+func flex*(self: Monster): seq[uint8] = 
+  let len = self.flexLength
+  for i in countup(0, len - 1):
+    result.add(self.flex(i))
+func test5Length*(self: Monster): int = 
+  let o = self.tab.Offset(66)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func test5*(self: Monster, j: int): MyGame_Example_Test.Test = 
+  let o = self.tab.Offset(66)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 4.uoffset
+    return MyGame_Example_Test.Test(tab: Vtable(Bytes: self.tab.Bytes, Pos: x))
+func test5*(self: Monster): seq[MyGame_Example_Test.Test] = 
+  let len = self.test5Length
+  for i in countup(0, len - 1):
+    result.add(self.test5(i))
+func vectorOfLongsLength*(self: Monster): int = 
+  let o = self.tab.Offset(68)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func vectorOfLongs*(self: Monster, j: int): int64 = 
+  let o = self.tab.Offset(68)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 8.uoffset
+    return Get[int64](self.tab, x)
+func vectorOfLongs*(self: Monster): seq[int64] = 
+  let len = self.vectorOfLongsLength
+  for i in countup(0, len - 1):
+    result.add(self.vectorOfLongs(i))
+func vectorOfDoublesLength*(self: Monster): int = 
+  let o = self.tab.Offset(70)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func vectorOfDoubles*(self: Monster, j: int): float64 = 
+  let o = self.tab.Offset(70)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 8.uoffset
+    return Get[float64](self.tab, x)
+func vectorOfDoubles*(self: Monster): seq[float64] = 
+  let len = self.vectorOfDoublesLength
+  for i in countup(0, len - 1):
+    result.add(self.vectorOfDoubles(i))
+func parentNamespaceTest*(self: Monster): Option[MyGame_InParentNamespace.InParentNamespace] =
+  let o = self.tab.Offset(72)
+  if o != 0:
+    return some(MyGame_InParentNamespace.InParentNamespace(tab: Vtable(Bytes: self.tab.Bytes, Pos: self.tab.Pos + o)))
+func vectorOfReferrablesLength*(self: Monster): int = 
+  let o = self.tab.Offset(74)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func vectorOfReferrables*(self: Monster, j: int): MyGame_Example_Referrable.Referrable = 
+  let o = self.tab.Offset(74)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 4.uoffset
+    return MyGame_Example_Referrable.Referrable(tab: Vtable(Bytes: self.tab.Bytes, Pos: x))
+func vectorOfReferrables*(self: Monster): seq[MyGame_Example_Referrable.Referrable] = 
+  let len = self.vectorOfReferrablesLength
+  for i in countup(0, len - 1):
+    result.add(self.vectorOfReferrables(i))
+func singleWeakReference*(self: Monster): uint64 =
+  let o = self.tab.Offset(76)
+  if o != 0:
+    return Get[uint64](self.tab, self.tab.Pos + o)
+  return 0
+func `singleWeakReference=`*(self: var Monster, n: uint64): bool =
+  return self.tab.MutateSlot(76, n)
+func vectorOfWeakReferencesLength*(self: Monster): int = 
+  let o = self.tab.Offset(78)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func vectorOfWeakReferences*(self: Monster, j: int): uint64 = 
+  let o = self.tab.Offset(78)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 8.uoffset
+    return Get[uint64](self.tab, x)
+func vectorOfWeakReferences*(self: Monster): seq[uint64] = 
+  let len = self.vectorOfWeakReferencesLength
+  for i in countup(0, len - 1):
+    result.add(self.vectorOfWeakReferences(i))
+func vectorOfStrongReferrablesLength*(self: Monster): int = 
+  let o = self.tab.Offset(80)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func vectorOfStrongReferrables*(self: Monster, j: int): MyGame_Example_Referrable.Referrable = 
+  let o = self.tab.Offset(80)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 4.uoffset
+    return MyGame_Example_Referrable.Referrable(tab: Vtable(Bytes: self.tab.Bytes, Pos: x))
+func vectorOfStrongReferrables*(self: Monster): seq[MyGame_Example_Referrable.Referrable] = 
+  let len = self.vectorOfStrongReferrablesLength
+  for i in countup(0, len - 1):
+    result.add(self.vectorOfStrongReferrables(i))
+func coOwningReference*(self: Monster): uint64 =
+  let o = self.tab.Offset(82)
+  if o != 0:
+    return Get[uint64](self.tab, self.tab.Pos + o)
+  return 0
+func `coOwningReference=`*(self: var Monster, n: uint64): bool =
+  return self.tab.MutateSlot(82, n)
+func vectorOfCoOwningReferencesLength*(self: Monster): int = 
+  let o = self.tab.Offset(84)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func vectorOfCoOwningReferences*(self: Monster, j: int): uint64 = 
+  let o = self.tab.Offset(84)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 8.uoffset
+    return Get[uint64](self.tab, x)
+func vectorOfCoOwningReferences*(self: Monster): seq[uint64] = 
+  let len = self.vectorOfCoOwningReferencesLength
+  for i in countup(0, len - 1):
+    result.add(self.vectorOfCoOwningReferences(i))
+func nonOwningReference*(self: Monster): uint64 =
+  let o = self.tab.Offset(86)
+  if o != 0:
+    return Get[uint64](self.tab, self.tab.Pos + o)
+  return 0
+func `nonOwningReference=`*(self: var Monster, n: uint64): bool =
+  return self.tab.MutateSlot(86, n)
+func vectorOfNonOwningReferencesLength*(self: Monster): int = 
+  let o = self.tab.Offset(88)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func vectorOfNonOwningReferences*(self: Monster, j: int): uint64 = 
+  let o = self.tab.Offset(88)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 8.uoffset
+    return Get[uint64](self.tab, x)
+func vectorOfNonOwningReferences*(self: Monster): seq[uint64] = 
+  let len = self.vectorOfNonOwningReferencesLength
+  for i in countup(0, len - 1):
+    result.add(self.vectorOfNonOwningReferences(i))
+func anyUniqueType*(self: Monster): MyGame_Example_AnyUniqueAliases.AnyUniqueAliases =
+  let o = self.tab.Offset(90)
+  if o != 0:
+    return MyGame_Example_AnyUniqueAliases.AnyUniqueAliases(Get[uint8](self.tab, self.tab.Pos + o))
+  return type(result)(0)
+func `anyUniqueType=`*(self: var Monster, n: MyGame_Example_AnyUniqueAliases.AnyUniqueAliases): bool =
+  return self.tab.MutateSlot(90, n)
+func anyUnique*(self: Monster): Option[Vtable] =
+  let o = self.tab.Offset(92)
+  if o != 0:
+    return some(self.tab.Union(o))
+func anyAmbiguousType*(self: Monster): MyGame_Example_AnyAmbiguousAliases.AnyAmbiguousAliases =
+  let o = self.tab.Offset(94)
+  if o != 0:
+    return MyGame_Example_AnyAmbiguousAliases.AnyAmbiguousAliases(Get[uint8](self.tab, self.tab.Pos + o))
+  return type(result)(0)
+func `anyAmbiguousType=`*(self: var Monster, n: MyGame_Example_AnyAmbiguousAliases.AnyAmbiguousAliases): bool =
+  return self.tab.MutateSlot(94, n)
+func anyAmbiguous*(self: Monster): Option[Vtable] =
+  let o = self.tab.Offset(96)
+  if o != 0:
+    return some(self.tab.Union(o))
+func vectorOfEnumsLength*(self: Monster): int = 
+  let o = self.tab.Offset(98)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func vectorOfEnums*(self: Monster, j: int): MyGame_Example_Color.Color = 
+  let o = self.tab.Offset(98)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 1.uoffset
+    return MyGame_Example_Color.Color(Get[uint8](self.tab, x))
+func vectorOfEnums*(self: Monster): seq[MyGame_Example_Color.Color] = 
+  let len = self.vectorOfEnumsLength
+  for i in countup(0, len - 1):
+    result.add(self.vectorOfEnums(i))
+func signedEnum*(self: Monster): MyGame_Example_Race.Race =
+  let o = self.tab.Offset(100)
+  if o != 0:
+    return MyGame_Example_Race.Race(Get[int8](self.tab, self.tab.Pos + o))
+  return type(result)(-1)
+func `signedEnum=`*(self: var Monster, n: MyGame_Example_Race.Race): bool =
+  return self.tab.MutateSlot(100, n)
+func testrequirednestedflatbufferLength*(self: Monster): int = 
+  let o = self.tab.Offset(102)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func testrequirednestedflatbuffer*(self: Monster, j: int): uint8 = 
+  let o = self.tab.Offset(102)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 1.uoffset
+    return Get[uint8](self.tab, x)
+func testrequirednestedflatbuffer*(self: Monster): seq[uint8] = 
+  let len = self.testrequirednestedflatbufferLength
+  for i in countup(0, len - 1):
+    result.add(self.testrequirednestedflatbuffer(i))
+func scalarKeySortedTablesLength*(self: Monster): int = 
+  let o = self.tab.Offset(104)
+  if o != 0:
+    return self.tab.VectorLen(o)
+func scalarKeySortedTables*(self: Monster, j: int): MyGame_Example_Stat.Stat = 
+  let o = self.tab.Offset(104)
+  if o != 0:
+    var x = self.tab.Vector(o)
+    x += j.uoffset * 4.uoffset
+    return MyGame_Example_Stat.Stat(tab: Vtable(Bytes: self.tab.Bytes, Pos: x))
+func scalarKeySortedTables*(self: Monster): seq[MyGame_Example_Stat.Stat] = 
+  let len = self.scalarKeySortedTablesLength
+  for i in countup(0, len - 1):
+    result.add(self.scalarKeySortedTables(i))
+func nativeInline*(self: Monster): Option[MyGame_Example_Test.Test] =
+  let o = self.tab.Offset(106)
+  if o != 0:
+    return some(MyGame_Example_Test.Test(tab: Vtable(Bytes: self.tab.Bytes, Pos: self.tab.Pos + o)))
+func longEnumNonEnumDefault*(self: Monster): MyGame_Example_LongEnum.LongEnum =
+  let o = self.tab.Offset(108)
+  if o != 0:
+    return MyGame_Example_LongEnum.LongEnum(Get[uint64](self.tab, self.tab.Pos + o))
+  return type(result)(0)
+func `longEnumNonEnumDefault=`*(self: var Monster, n: MyGame_Example_LongEnum.LongEnum): bool =
+  return self.tab.MutateSlot(108, n)
+func longEnumNormalDefault*(self: Monster): MyGame_Example_LongEnum.LongEnum =
+  let o = self.tab.Offset(110)
+  if o != 0:
+    return MyGame_Example_LongEnum.LongEnum(Get[uint64](self.tab, self.tab.Pos + o))
+  return type(result)(2)
+func `longEnumNormalDefault=`*(self: var Monster, n: MyGame_Example_LongEnum.LongEnum): bool =
+  return self.tab.MutateSlot(110, n)
+func nanDefault*(self: Monster): float32 =
+  let o = self.tab.Offset(112)
+  if o != 0:
+    return Get[float32](self.tab, self.tab.Pos + o)
+  return NaN
+func `nanDefault=`*(self: var Monster, n: float32): bool =
+  return self.tab.MutateSlot(112, n)
+func infDefault*(self: Monster): float32 =
+  let o = self.tab.Offset(114)
+  if o != 0:
+    return Get[float32](self.tab, self.tab.Pos + o)
+  return Inf
+func `infDefault=`*(self: var Monster, n: float32): bool =
+  return self.tab.MutateSlot(114, n)
+func positiveInfDefault*(self: Monster): float32 =
+  let o = self.tab.Offset(116)
+  if o != 0:
+    return Get[float32](self.tab, self.tab.Pos + o)
+  return Inf
+func `positiveInfDefault=`*(self: var Monster, n: float32): bool =
+  return self.tab.MutateSlot(116, n)
+func infinityDefault*(self: Monster): float32 =
+  let o = self.tab.Offset(118)
+  if o != 0:
+    return Get[float32](self.tab, self.tab.Pos + o)
+  return Inf
+func `infinityDefault=`*(self: var Monster, n: float32): bool =
+  return self.tab.MutateSlot(118, n)
+func positiveInfinityDefault*(self: Monster): float32 =
+  let o = self.tab.Offset(120)
+  if o != 0:
+    return Get[float32](self.tab, self.tab.Pos + o)
+  return Inf
+func `positiveInfinityDefault=`*(self: var Monster, n: float32): bool =
+  return self.tab.MutateSlot(120, n)
+func negativeInfDefault*(self: Monster): float32 =
+  let o = self.tab.Offset(122)
+  if o != 0:
+    return Get[float32](self.tab, self.tab.Pos + o)
+  return -Inf
+func `negativeInfDefault=`*(self: var Monster, n: float32): bool =
+  return self.tab.MutateSlot(122, n)
+func negativeInfinityDefault*(self: Monster): float32 =
+  let o = self.tab.Offset(124)
+  if o != 0:
+    return Get[float32](self.tab, self.tab.Pos + o)
+  return -Inf
+func `negativeInfinityDefault=`*(self: var Monster, n: float32): bool =
+  return self.tab.MutateSlot(124, n)
+func doubleInfDefault*(self: Monster): float64 =
+  let o = self.tab.Offset(126)
+  if o != 0:
+    return Get[float64](self.tab, self.tab.Pos + o)
+  return Inf
+func `doubleInfDefault=`*(self: var Monster, n: float64): bool =
+  return self.tab.MutateSlot(126, n)
+proc MonsterStart*(builder: var Builder) =
+  builder.StartObject(62)
+proc MonsterAddpos*(builder: var Builder, pos: uoffset) =
+  builder.PrependStructSlot(0, pos, default(uoffset))
+proc MonsterAddmana*(builder: var Builder, mana: int16) =
+  builder.PrependSlot(1, mana, default(int16))
+proc MonsterAddhp*(builder: var Builder, hp: int16) =
+  builder.PrependSlot(2, hp, default(int16))
+proc MonsterAddname*(builder: var Builder, name: uoffset) =
+  builder.PrependSlot(3, name, default(uoffset))
+proc MonsterAddinventory*(builder: var Builder, inventory: uoffset) =
+  builder.PrependSlot(5, inventory, default(uoffset))
+proc MonsterStartinventoryVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(1, numElems, 1)
+proc MonsterAddcolor*(builder: var Builder, color: uint8) =
+  builder.PrependSlot(6, color, default(uint8))
+proc MonsterAddtestType*(builder: var Builder, testType: uint8) =
+  builder.PrependSlot(7, testType, default(uint8))
+proc MonsterAddtest*(builder: var Builder, test: uoffset) =
+  builder.PrependSlot(8, test, default(uoffset))
+proc MonsterAddtest4*(builder: var Builder, test4: uoffset) =
+  builder.PrependSlot(9, test4, default(uoffset))
+proc MonsterStarttest4Vector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(4, numElems, 2)
+proc MonsterAddtestarrayofstring*(builder: var Builder, testarrayofstring: uoffset) =
+  builder.PrependSlot(10, testarrayofstring, default(uoffset))
+proc MonsterStarttestarrayofstringVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(4, numElems, 4)
+proc MonsterAddtestarrayoftables*(builder: var Builder, testarrayoftables: uoffset) =
+  builder.PrependSlot(11, testarrayoftables, default(uoffset))
+proc MonsterStarttestarrayoftablesVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(4, numElems, 4)
+proc MonsterAddenemy*(builder: var Builder, enemy: uoffset) =
+  builder.PrependStructSlot(12, enemy, default(uoffset))
+proc MonsterAddtestnestedflatbuffer*(builder: var Builder, testnestedflatbuffer: uoffset) =
+  builder.PrependSlot(13, testnestedflatbuffer, default(uoffset))
+proc MonsterStarttestnestedflatbufferVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(1, numElems, 1)
+proc MonsterAddtestempty*(builder: var Builder, testempty: uoffset) =
+  builder.PrependStructSlot(14, testempty, default(uoffset))
+proc MonsterAddtestbool*(builder: var Builder, testbool: bool) =
+  builder.PrependSlot(15, testbool, default(bool))
+proc MonsterAddtesthashs32Fnv1*(builder: var Builder, testhashs32Fnv1: int32) =
+  builder.PrependSlot(16, testhashs32Fnv1, default(int32))
+proc MonsterAddtesthashu32Fnv1*(builder: var Builder, testhashu32Fnv1: uint32) =
+  builder.PrependSlot(17, testhashu32Fnv1, default(uint32))
+proc MonsterAddtesthashs64Fnv1*(builder: var Builder, testhashs64Fnv1: int64) =
+  builder.PrependSlot(18, testhashs64Fnv1, default(int64))
+proc MonsterAddtesthashu64Fnv1*(builder: var Builder, testhashu64Fnv1: uint64) =
+  builder.PrependSlot(19, testhashu64Fnv1, default(uint64))
+proc MonsterAddtesthashs32Fnv1a*(builder: var Builder, testhashs32Fnv1a: int32) =
+  builder.PrependSlot(20, testhashs32Fnv1a, default(int32))
+proc MonsterAddtesthashu32Fnv1a*(builder: var Builder, testhashu32Fnv1a: uint32) =
+  builder.PrependSlot(21, testhashu32Fnv1a, default(uint32))
+proc MonsterAddtesthashs64Fnv1a*(builder: var Builder, testhashs64Fnv1a: int64) =
+  builder.PrependSlot(22, testhashs64Fnv1a, default(int64))
+proc MonsterAddtesthashu64Fnv1a*(builder: var Builder, testhashu64Fnv1a: uint64) =
+  builder.PrependSlot(23, testhashu64Fnv1a, default(uint64))
+proc MonsterAddtestarrayofbools*(builder: var Builder, testarrayofbools: uoffset) =
+  builder.PrependSlot(24, testarrayofbools, default(uoffset))
+proc MonsterStarttestarrayofboolsVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(1, numElems, 1)
+proc MonsterAddtestf*(builder: var Builder, testf: float32) =
+  builder.PrependSlot(25, testf, default(float32))
+proc MonsterAddtestf2*(builder: var Builder, testf2: float32) =
+  builder.PrependSlot(26, testf2, default(float32))
+proc MonsterAddtestf3*(builder: var Builder, testf3: float32) =
+  builder.PrependSlot(27, testf3, default(float32))
+proc MonsterAddtestarrayofstring2*(builder: var Builder, testarrayofstring2: uoffset) =
+  builder.PrependSlot(28, testarrayofstring2, default(uoffset))
+proc MonsterStarttestarrayofstring2Vector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(4, numElems, 4)
+proc MonsterAddtestarrayofsortedstruct*(builder: var Builder, testarrayofsortedstruct: uoffset) =
+  builder.PrependSlot(29, testarrayofsortedstruct, default(uoffset))
+proc MonsterStarttestarrayofsortedstructVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(8, numElems, 4)
+proc MonsterAddflex*(builder: var Builder, flex: uoffset) =
+  builder.PrependSlot(30, flex, default(uoffset))
+proc MonsterStartflexVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(1, numElems, 1)
+proc MonsterAddtest5*(builder: var Builder, test5: uoffset) =
+  builder.PrependSlot(31, test5, default(uoffset))
+proc MonsterStarttest5Vector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(4, numElems, 2)
+proc MonsterAddvectorOfLongs*(builder: var Builder, vectorOfLongs: uoffset) =
+  builder.PrependSlot(32, vectorOfLongs, default(uoffset))
+proc MonsterStartvectorOfLongsVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(8, numElems, 8)
+proc MonsterAddvectorOfDoubles*(builder: var Builder, vectorOfDoubles: uoffset) =
+  builder.PrependSlot(33, vectorOfDoubles, default(uoffset))
+proc MonsterStartvectorOfDoublesVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(8, numElems, 8)
+proc MonsterAddparentNamespaceTest*(builder: var Builder, parentNamespaceTest: uoffset) =
+  builder.PrependStructSlot(34, parentNamespaceTest, default(uoffset))
+proc MonsterAddvectorOfReferrables*(builder: var Builder, vectorOfReferrables: uoffset) =
+  builder.PrependSlot(35, vectorOfReferrables, default(uoffset))
+proc MonsterStartvectorOfReferrablesVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(4, numElems, 4)
+proc MonsterAddsingleWeakReference*(builder: var Builder, singleWeakReference: uint64) =
+  builder.PrependSlot(36, singleWeakReference, default(uint64))
+proc MonsterAddvectorOfWeakReferences*(builder: var Builder, vectorOfWeakReferences: uoffset) =
+  builder.PrependSlot(37, vectorOfWeakReferences, default(uoffset))
+proc MonsterStartvectorOfWeakReferencesVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(8, numElems, 8)
+proc MonsterAddvectorOfStrongReferrables*(builder: var Builder, vectorOfStrongReferrables: uoffset) =
+  builder.PrependSlot(38, vectorOfStrongReferrables, default(uoffset))
+proc MonsterStartvectorOfStrongReferrablesVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(4, numElems, 4)
+proc MonsterAddcoOwningReference*(builder: var Builder, coOwningReference: uint64) =
+  builder.PrependSlot(39, coOwningReference, default(uint64))
+proc MonsterAddvectorOfCoOwningReferences*(builder: var Builder, vectorOfCoOwningReferences: uoffset) =
+  builder.PrependSlot(40, vectorOfCoOwningReferences, default(uoffset))
+proc MonsterStartvectorOfCoOwningReferencesVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(8, numElems, 8)
+proc MonsterAddnonOwningReference*(builder: var Builder, nonOwningReference: uint64) =
+  builder.PrependSlot(41, nonOwningReference, default(uint64))
+proc MonsterAddvectorOfNonOwningReferences*(builder: var Builder, vectorOfNonOwningReferences: uoffset) =
+  builder.PrependSlot(42, vectorOfNonOwningReferences, default(uoffset))
+proc MonsterStartvectorOfNonOwningReferencesVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(8, numElems, 8)
+proc MonsterAddanyUniqueType*(builder: var Builder, anyUniqueType: uint8) =
+  builder.PrependSlot(43, anyUniqueType, default(uint8))
+proc MonsterAddanyUnique*(builder: var Builder, anyUnique: uoffset) =
+  builder.PrependSlot(44, anyUnique, default(uoffset))
+proc MonsterAddanyAmbiguousType*(builder: var Builder, anyAmbiguousType: uint8) =
+  builder.PrependSlot(45, anyAmbiguousType, default(uint8))
+proc MonsterAddanyAmbiguous*(builder: var Builder, anyAmbiguous: uoffset) =
+  builder.PrependSlot(46, anyAmbiguous, default(uoffset))
+proc MonsterAddvectorOfEnums*(builder: var Builder, vectorOfEnums: uoffset) =
+  builder.PrependSlot(47, vectorOfEnums, default(uoffset))
+proc MonsterStartvectorOfEnumsVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(1, numElems, 1)
+proc MonsterAddsignedEnum*(builder: var Builder, signedEnum: int8) =
+  builder.PrependSlot(48, signedEnum, default(int8))
+proc MonsterAddtestrequirednestedflatbuffer*(builder: var Builder, testrequirednestedflatbuffer: uoffset) =
+  builder.PrependSlot(49, testrequirednestedflatbuffer, default(uoffset))
+proc MonsterStarttestrequirednestedflatbufferVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(1, numElems, 1)
+proc MonsterAddscalarKeySortedTables*(builder: var Builder, scalarKeySortedTables: uoffset) =
+  builder.PrependSlot(50, scalarKeySortedTables, default(uoffset))
+proc MonsterStartscalarKeySortedTablesVector*(builder: var Builder, numElems: uoffset) =
+  builder.StartVector(4, numElems, 4)
+proc MonsterAddnativeInline*(builder: var Builder, nativeInline: uoffset) =
+  builder.PrependStructSlot(51, nativeInline, default(uoffset))
+proc MonsterAddlongEnumNonEnumDefault*(builder: var Builder, longEnumNonEnumDefault: uint64) =
+  builder.PrependSlot(52, longEnumNonEnumDefault, default(uint64))
+proc MonsterAddlongEnumNormalDefault*(builder: var Builder, longEnumNormalDefault: uint64) =
+  builder.PrependSlot(53, longEnumNormalDefault, default(uint64))
+proc MonsterAddnanDefault*(builder: var Builder, nanDefault: float32) =
+  builder.PrependSlot(54, nanDefault, default(float32))
+proc MonsterAddinfDefault*(builder: var Builder, infDefault: float32) =
+  builder.PrependSlot(55, infDefault, default(float32))
+proc MonsterAddpositiveInfDefault*(builder: var Builder, positiveInfDefault: float32) =
+  builder.PrependSlot(56, positiveInfDefault, default(float32))
+proc MonsterAddinfinityDefault*(builder: var Builder, infinityDefault: float32) =
+  builder.PrependSlot(57, infinityDefault, default(float32))
+proc MonsterAddpositiveInfinityDefault*(builder: var Builder, positiveInfinityDefault: float32) =
+  builder.PrependSlot(58, positiveInfinityDefault, default(float32))
+proc MonsterAddnegativeInfDefault*(builder: var Builder, negativeInfDefault: float32) =
+  builder.PrependSlot(59, negativeInfDefault, default(float32))
+proc MonsterAddnegativeInfinityDefault*(builder: var Builder, negativeInfinityDefault: float32) =
+  builder.PrependSlot(60, negativeInfinityDefault, default(float32))
+proc MonsterAdddoubleInfDefault*(builder: var Builder, doubleInfDefault: float64) =
+  builder.PrependSlot(61, doubleInfDefault, default(float64))
+proc MonsterEnd*(builder: var Builder): uoffset =
+  return builder.EndObject()