// Annotated Flatbuffer Binary
//
// Schema file: monster_test.fbs
// Binary file: monsterdata_test.mon

header:
  +0x0000 | 78 00 00 00             | UOffset32  | 0x00000078 (120) Loc: 0x0078             | offset to root table `MyGame.Example.Monster`
  +0x0004 | 4D 4F 4E 53             | char[4]    | MONS                                     | File Identifier

padding:
  +0x0008 | 00 00 00 00             | uint8_t[4] | ....                                     | padding

vtable (MyGame.Example.Monster):
  +0x000C | 6C 00                   | uint16_t   | 0x006C (108)                             | size of this vtable
  +0x000E | 94 00                   | uint16_t   | 0x0094 (148)                             | size of referring table
  +0x0010 | 08 00                   | VOffset16  | 0x0008 (8)                               | offset to field `pos` (id: 0)
  +0x0012 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `mana` (id: 1) <defaults to 150> (Short)
  +0x0014 | 06 00                   | VOffset16  | 0x0006 (6)                               | offset to field `hp` (id: 2)
  +0x0016 | 2C 00                   | VOffset16  | 0x002C (44)                              | offset to field `name` (id: 3)
  +0x0018 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `friendly` (id: 4) <defaults to 0> (Bool)
  +0x001A | 30 00                   | VOffset16  | 0x0030 (48)                              | offset to field `inventory` (id: 5)
  +0x001C | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `color` (id: 6) <defaults to 8> (UByte)
  +0x001E | 04 00                   | VOffset16  | 0x0004 (4)                               | offset to field `test_type` (id: 7)
  +0x0020 | 34 00                   | VOffset16  | 0x0034 (52)                              | offset to field `test` (id: 8)
  +0x0022 | 38 00                   | VOffset16  | 0x0038 (56)                              | offset to field `test4` (id: 9)
  +0x0024 | 3C 00                   | VOffset16  | 0x003C (60)                              | offset to field `testarrayofstring` (id: 10)
  +0x0026 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `testarrayoftables` (id: 11) <null> (Vector)
  +0x0028 | 40 00                   | VOffset16  | 0x0040 (64)                              | offset to field `enemy` (id: 12)
  +0x002A | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `testnestedflatbuffer` (id: 13) <null> (Vector)
  +0x002C | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `testempty` (id: 14) <null> (Obj)
  +0x002E | 05 00                   | VOffset16  | 0x0005 (5)                               | offset to field `testbool` (id: 15)
  +0x0030 | 44 00                   | VOffset16  | 0x0044 (68)                              | offset to field `testhashs32_fnv1` (id: 16)
  +0x0032 | 48 00                   | VOffset16  | 0x0048 (72)                              | offset to field `testhashu32_fnv1` (id: 17)
  +0x0034 | 70 00                   | VOffset16  | 0x0070 (112)                             | offset to field `testhashs64_fnv1` (id: 18)
  +0x0036 | 78 00                   | VOffset16  | 0x0078 (120)                             | offset to field `testhashu64_fnv1` (id: 19)
  +0x0038 | 4C 00                   | VOffset16  | 0x004C (76)                              | offset to field `testhashs32_fnv1a` (id: 20)
  +0x003A | 50 00                   | VOffset16  | 0x0050 (80)                              | offset to field `testhashu32_fnv1a` (id: 21)
  +0x003C | 80 00                   | VOffset16  | 0x0080 (128)                             | offset to field `testhashs64_fnv1a` (id: 22)
  +0x003E | 88 00                   | VOffset16  | 0x0088 (136)                             | offset to field `testhashu64_fnv1a` (id: 23)
  +0x0040 | 54 00                   | VOffset16  | 0x0054 (84)                              | offset to field `testarrayofbools` (id: 24)
  +0x0042 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `testf` (id: 25) <defaults to 3.141590> (Float)
  +0x0044 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `testf2` (id: 26) <defaults to 3.000000> (Float)
  +0x0046 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `testf3` (id: 27) <defaults to 0.000000> (Float)
  +0x0048 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `testarrayofstring2` (id: 28) <null> (Vector)
  +0x004A | 58 00                   | VOffset16  | 0x0058 (88)                              | offset to field `testarrayofsortedstruct` (id: 29)
  +0x004C | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `flex` (id: 30) <null> (Vector)
  +0x004E | 5C 00                   | VOffset16  | 0x005C (92)                              | offset to field `test5` (id: 31)
  +0x0050 | 60 00                   | VOffset16  | 0x0060 (96)                              | offset to field `vector_of_longs` (id: 32)
  +0x0052 | 64 00                   | VOffset16  | 0x0064 (100)                             | offset to field `vector_of_doubles` (id: 33)
  +0x0054 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `parent_namespace_test` (id: 34) <null> (Obj)
  +0x0056 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `vector_of_referrables` (id: 35) <null> (Vector)
  +0x0058 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `single_weak_reference` (id: 36) <defaults to 0> (ULong)
  +0x005A | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `vector_of_weak_references` (id: 37) <null> (Vector)
  +0x005C | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `vector_of_strong_referrables` (id: 38) <null> (Vector)
  +0x005E | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `co_owning_reference` (id: 39) <defaults to 0> (ULong)
  +0x0060 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `vector_of_co_owning_references` (id: 40) <null> (Vector)
  +0x0062 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `non_owning_reference` (id: 41) <defaults to 0> (ULong)
  +0x0064 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `vector_of_non_owning_references` (id: 42) <null> (Vector)
  +0x0066 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `any_unique_type` (id: 43) <defaults to 0> (UType)
  +0x0068 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `any_unique` (id: 44) <null> (Union)
  +0x006A | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `any_ambiguous_type` (id: 45) <defaults to 0> (UType)
  +0x006C | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `any_ambiguous` (id: 46) <null> (Union)
  +0x006E | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `vector_of_enums` (id: 47) <null> (Vector)
  +0x0070 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `signed_enum` (id: 48) <defaults to -1> (Byte)
  +0x0072 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `testrequirednestedflatbuffer` (id: 49) <null> (Vector)
  +0x0074 | 68 00                   | VOffset16  | 0x0068 (104)                             | offset to field `scalar_key_sorted_tables` (id: 50)
  +0x0076 | 6C 00                   | VOffset16  | 0x006C (108)                             | offset to field `native_inline` (id: 51)

root_table (MyGame.Example.Monster):
  +0x0078 | 6C 00 00 00             | SOffset32  | 0x0000006C (108) Loc: 0x000C             | offset to vtable
  +0x007C | 01                      | UType8     | 0x01 (1)                                 | table field `test_type` (UType)
  +0x007D | 01                      | uint8_t    | 0x01 (1)                                 | table field `testbool` (Bool)
  +0x007E | 50 00                   | int16_t    | 0x0050 (80)                              | table field `hp` (Short)
  +0x0080 | 00 00 80 3F             | float      | 0x3F800000 (1)                           | struct field `pos.x` of 'MyGame.Example.Vec3' (Float)
  +0x0084 | 00 00 00 40             | float      | 0x40000000 (2)                           | struct field `pos.y` of 'MyGame.Example.Vec3' (Float)
  +0x0088 | 00 00 40 40             | float      | 0x40400000 (3)                           | struct field `pos.z` of 'MyGame.Example.Vec3' (Float)
  +0x008C | 00 00 00 00             | uint8_t[4] | ....                                     | padding
  +0x0090 | 00 00 00 00 00 00 08 40 | double     | 0x4008000000000000 (3)                   | struct field `pos.test1` of 'MyGame.Example.Vec3' (Double)
  +0x0098 | 02                      | uint8_t    | 0x02 (2)                                 | struct field `pos.test2` of 'MyGame.Example.Vec3' (UByte)
  +0x0099 | 00                      | uint8_t[1] | .                                        | padding
  +0x009A | 05 00                   | int16_t    | 0x0005 (5)                               | struct field `pos.test3.a` of 'MyGame.Example.Test' (Short)
  +0x009C | 06                      | uint8_t    | 0x06 (6)                                 | struct field `pos.test3.b` of 'MyGame.Example.Test' (Byte)
  +0x009D | 00                      | uint8_t[1] | .                                        | padding
  +0x009E | 00 00                   | uint8_t[2] | ..                                       | padding
  +0x00A0 | 00 00 00 00             | uint8_t[4] | ....                                     | padding
  +0x00A4 | A4 01 00 00             | UOffset32  | 0x000001A4 (420) Loc: 0x0248             | offset to field `name` (string)
  +0x00A8 | 94 01 00 00             | UOffset32  | 0x00000194 (404) Loc: 0x023C             | offset to field `inventory` (vector)
  +0x00AC | 2C 01 00 00             | UOffset32  | 0x0000012C (300) Loc: 0x01D8             | offset to field `test` (union of type `Monster`)
  +0x00B0 | 10 01 00 00             | UOffset32  | 0x00000110 (272) Loc: 0x01C0             | offset to field `test4` (vector)
  +0x00B4 | DC 00 00 00             | UOffset32  | 0x000000DC (220) Loc: 0x0190             | offset to field `testarrayofstring` (vector)
  +0x00B8 | C4 00 00 00             | UOffset32  | 0x000000C4 (196) Loc: 0x017C             | offset to field `enemy` (table)
  +0x00BC | 41 C9 79 DD             | uint32_t   | 0xDD79C941 (3715746113)                  | table field `testhashs32_fnv1` (Int)
  +0x00C0 | 41 C9 79 DD             | uint32_t   | 0xDD79C941 (3715746113)                  | table field `testhashu32_fnv1` (UInt)
  +0x00C4 | 71 A4 81 8E             | uint32_t   | 0x8E81A471 (2390860913)                  | table field `testhashs32_fnv1a` (Int)
  +0x00C8 | 71 A4 81 8E             | uint32_t   | 0x8E81A471 (2390860913)                  | table field `testhashu32_fnv1a` (UInt)
  +0x00CC | A8 00 00 00             | UOffset32  | 0x000000A8 (168) Loc: 0x0174             | offset to field `testarrayofbools` (vector)
  +0x00D0 | 88 00 00 00             | UOffset32  | 0x00000088 (136) Loc: 0x0158             | offset to field `testarrayofsortedstruct` (vector)
  +0x00D4 | E0 00 00 00             | UOffset32  | 0x000000E0 (224) Loc: 0x01B4             | offset to field `test5` (vector)
  +0x00D8 | 34 01 00 00             | UOffset32  | 0x00000134 (308) Loc: 0x020C             | offset to field `vector_of_longs` (vector)
  +0x00DC | 10 01 00 00             | UOffset32  | 0x00000110 (272) Loc: 0x01EC             | offset to field `vector_of_doubles` (vector)
  +0x00E0 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x010C              | offset to field `scalar_key_sorted_tables` (vector)
  +0x00E4 | 01 00                   | int16_t    | 0x0001 (1)                               | struct field `native_inline.a` of 'MyGame.Example.Test' (Short)
  +0x00E6 | 02                      | uint8_t    | 0x02 (2)                                 | struct field `native_inline.b` of 'MyGame.Example.Test' (Byte)
  +0x00E7 | 00                      | uint8_t[1] | .                                        | padding
  +0x00E8 | 81 91 7B F2 CD 80 0F 6E | int64_t    | 0x6E0F80CDF27B9181 (7930699090847568257) | table field `testhashs64_fnv1` (Long)
  +0x00F0 | 81 91 7B F2 CD 80 0F 6E | uint64_t   | 0x6E0F80CDF27B9181 (7930699090847568257) | table field `testhashu64_fnv1` (ULong)
  +0x00F8 | F1 DD 67 C7 DC 48 F9 43 | int64_t    | 0x43F948DCC767DDF1 (4898026182817603057) | table field `testhashs64_fnv1a` (Long)
  +0x0100 | F1 DD 67 C7 DC 48 F9 43 | uint64_t   | 0x43F948DCC767DDF1 (4898026182817603057) | table field `testhashu64_fnv1a` (ULong)
  +0x0108 | 00 00 00 00             | uint8_t[4] | ....                                     | padding

vector (MyGame.Example.Monster.scalar_key_sorted_tables):
  +0x010C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                           | length of vector (# items)
  +0x0110 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x0120              | offset to table[0]
  +0x0114 | 28 00 00 00             | UOffset32  | 0x00000028 (40) Loc: 0x013C              | offset to table[1]

padding:
  +0x0118 | 00 00                   | uint8_t[2] | ..                                       | padding

vtable (MyGame.Example.Stat):
  +0x011A | 06 00                   | uint16_t   | 0x0006 (6)                               | size of this vtable
  +0x011C | 08 00                   | uint16_t   | 0x0008 (8)                               | size of referring table
  +0x011E | 04 00                   | VOffset16  | 0x0004 (4)                               | offset to field `id` (id: 0)

table (MyGame.Example.Stat):
  +0x0120 | 06 00 00 00             | SOffset32  | 0x00000006 (6) Loc: 0x011A               | offset to vtable
  +0x0124 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0128               | offset to field `id` (string)

string (MyGame.Example.Stat.id):
  +0x0128 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                           | length of string
  +0x012C | 6D 69 73 73             | char[4]    | miss                                     | string literal
  +0x0130 | 00                      | char       | 0x00 (0)                                 | string terminator

vtable (MyGame.Example.Stat):
  +0x0132 | 0A 00                   | uint16_t   | 0x000A (10)                              | size of this vtable
  +0x0134 | 14 00                   | uint16_t   | 0x0014 (20)                              | size of referring table
  +0x0136 | 08 00                   | VOffset16  | 0x0008 (8)                               | offset to field `id` (id: 0)
  +0x0138 | 0C 00                   | VOffset16  | 0x000C (12)                              | offset to field `val` (id: 1)
  +0x013A | 06 00                   | VOffset16  | 0x0006 (6)                               | offset to field `count` (id: 2)

table (MyGame.Example.Stat):
  +0x013C | 0A 00 00 00             | SOffset32  | 0x0000000A (10) Loc: 0x0132              | offset to vtable
  +0x0140 | 00 00                   | uint8_t[2] | ..                                       | padding
  +0x0142 | 01 00                   | uint16_t   | 0x0001 (1)                               | table field `count` (UShort)
  +0x0144 | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x0150              | offset to field `id` (string)
  +0x0148 | 0A 00 00 00 00 00 00 00 | int64_t    | 0x000000000000000A (10)                  | table field `val` (Long)

string (MyGame.Example.Stat.id):
  +0x0150 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                           | length of string
  +0x0154 | 68 69 74                | char[3]    | hit                                      | string literal
  +0x0157 | 00                      | char       | 0x00 (0)                                 | string terminator

vector (MyGame.Example.Monster.testarrayofsortedstruct):
  +0x0158 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                           | length of vector (# items)
  +0x015C | 00 00 00 00             | uint32_t   | 0x00000000 (0)                           | struct field `[0].id` of 'MyGame.Example.Ability' (UInt)
  +0x0160 | 2D 00 00 00             | uint32_t   | 0x0000002D (45)                          | struct field `[0].distance` of 'MyGame.Example.Ability' (UInt)
  +0x0164 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                           | struct field `[1].id` of 'MyGame.Example.Ability' (UInt)
  +0x0168 | 15 00 00 00             | uint32_t   | 0x00000015 (21)                          | struct field `[1].distance` of 'MyGame.Example.Ability' (UInt)
  +0x016C | 05 00 00 00             | uint32_t   | 0x00000005 (5)                           | struct field `[2].id` of 'MyGame.Example.Ability' (UInt)
  +0x0170 | 0C 00 00 00             | uint32_t   | 0x0000000C (12)                          | struct field `[2].distance` of 'MyGame.Example.Ability' (UInt)

vector (MyGame.Example.Monster.testarrayofbools):
  +0x0174 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                           | length of vector (# items)
  +0x0178 | 01                      | uint8_t    | 0x01 (1)                                 | value[0]
  +0x0179 | 00                      | uint8_t    | 0x00 (0)                                 | value[1]
  +0x017A | 01                      | uint8_t    | 0x01 (1)                                 | value[2]

table (MyGame.Example.Monster):
  +0x017C | B0 FF FF FF             | SOffset32  | 0xFFFFFFB0 (-80) Loc: 0x01CC             | offset to vtable
  +0x0180 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0184               | offset to field `name` (string)

string (MyGame.Example.Monster.name):
  +0x0184 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                           | length of string
  +0x0188 | 46 72 65 64             | char[4]    | Fred                                     | string literal
  +0x018C | 00                      | char       | 0x00 (0)                                 | string terminator

padding:
  +0x018D | 00 00 00                | uint8_t[3] | ...                                      | padding

vector (MyGame.Example.Monster.testarrayofstring):
  +0x0190 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                           | length of vector (# items)
  +0x0194 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x01A8              | offset to string[0]
  +0x0198 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x019C               | offset to string[1]

string (MyGame.Example.Monster.testarrayofstring):
  +0x019C | 05 00 00 00             | uint32_t   | 0x00000005 (5)                           | length of string
  +0x01A0 | 74 65 73 74 32          | char[5]    | test2                                    | string literal
  +0x01A5 | 00                      | char       | 0x00 (0)                                 | string terminator

padding:
  +0x01A6 | 00 00                   | uint8_t[2] | ..                                       | padding

string (MyGame.Example.Monster.testarrayofstring):
  +0x01A8 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                           | length of string
  +0x01AC | 74 65 73 74 31          | char[5]    | test1                                    | string literal
  +0x01B1 | 00                      | char       | 0x00 (0)                                 | string terminator

padding:
  +0x01B2 | 00 00                   | uint8_t[2] | ..                                       | padding

vector (MyGame.Example.Monster.test5):
  +0x01B4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                           | length of vector (# items)
  +0x01B8 | 0A 00                   | int16_t    | 0x000A (10)                              | struct field `[0].a` of 'MyGame.Example.Test' (Short)
  +0x01BA | 14                      | uint8_t    | 0x14 (20)                                | struct field `[0].b` of 'MyGame.Example.Test' (Byte)
  +0x01BB | 00                      | uint8_t[1] | .                                        | padding
  +0x01BC | 1E 00                   | int16_t    | 0x001E (30)                              | struct field `[1].a` of 'MyGame.Example.Test' (Short)
  +0x01BE | 28                      | uint8_t    | 0x28 (40)                                | struct field `[1].b` of 'MyGame.Example.Test' (Byte)
  +0x01BF | 00                      | uint8_t[1] | .                                        | padding

vector (MyGame.Example.Monster.test4):
  +0x01C0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                           | length of vector (# items)
  +0x01C4 | 0A 00                   | int16_t    | 0x000A (10)                              | struct field `[0].a` of 'MyGame.Example.Test' (Short)
  +0x01C6 | 14                      | uint8_t    | 0x14 (20)                                | struct field `[0].b` of 'MyGame.Example.Test' (Byte)
  +0x01C7 | 00                      | uint8_t[1] | .                                        | padding
  +0x01C8 | 1E 00                   | int16_t    | 0x001E (30)                              | struct field `[1].a` of 'MyGame.Example.Test' (Short)
  +0x01CA | 28                      | uint8_t    | 0x28 (40)                                | struct field `[1].b` of 'MyGame.Example.Test' (Byte)
  +0x01CB | 00                      | uint8_t[1] | .                                        | padding

vtable (MyGame.Example.Monster):
  +0x01CC | 0C 00                   | uint16_t   | 0x000C (12)                              | size of this vtable
  +0x01CE | 08 00                   | uint16_t   | 0x0008 (8)                               | size of referring table
  +0x01D0 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `pos` (id: 0) <null> (Obj)
  +0x01D2 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `mana` (id: 1) <defaults to 150> (Short)
  +0x01D4 | 00 00                   | VOffset16  | 0x0000 (0)                               | offset to field `hp` (id: 2) <defaults to 100> (Short)
  +0x01D6 | 04 00                   | VOffset16  | 0x0004 (4)                               | offset to field `name` (id: 3)

table (MyGame.Example.Monster):
  +0x01D8 | 0C 00 00 00             | SOffset32  | 0x0000000C (12) Loc: 0x01CC              | offset to vtable
  +0x01DC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x01E0               | offset to field `name` (string)

string (MyGame.Example.Monster.name):
  +0x01E0 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                           | length of string
  +0x01E4 | 46 72 65 64             | char[4]    | Fred                                     | string literal
  +0x01E8 | 00                      | char       | 0x00 (0)                                 | string terminator

padding:
  +0x01E9 | 00 00 00                | uint8_t[3] | ...                                      | padding

vector (MyGame.Example.Monster.vector_of_doubles):
  +0x01EC | 03 00 00 00             | uint32_t   | 0x00000003 (3)                           | length of vector (# items)
  +0x01F0 | FF FF FF FF FF FF EF FF | double     | 0xFFEFFFFFFFFFFFFF (-1.79769e+308)       | value[0]
  +0x01F8 | 00 00 00 00 00 00 00 00 | double     | 0x0000000000000000 (0)                   | value[1]
  +0x0200 | FF FF FF FF FF FF EF 7F | double     | 0x7FEFFFFFFFFFFFFF (1.79769e+308)        | value[2]

padding:
  +0x0208 | 00 00 00 00             | uint8_t[4] | ....                                     | padding

vector (MyGame.Example.Monster.vector_of_longs):
  +0x020C | 05 00 00 00             | uint32_t   | 0x00000005 (5)                           | length of vector (# items)
  +0x0210 | 01 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000001 (1)                   | value[0]
  +0x0218 | 64 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000064 (100)                 | value[1]
  +0x0220 | 10 27 00 00 00 00 00 00 | int64_t    | 0x0000000000002710 (10000)               | value[2]
  +0x0228 | 40 42 0F 00 00 00 00 00 | int64_t    | 0x00000000000F4240 (1000000)             | value[3]
  +0x0230 | 00 E1 F5 05 00 00 00 00 | int64_t    | 0x0000000005F5E100 (100000000)           | value[4]

padding:
  +0x0238 | 00 00 00 00             | uint8_t[4] | ....                                     | padding

vector (MyGame.Example.Monster.inventory):
  +0x023C | 05 00 00 00             | uint32_t   | 0x00000005 (5)                           | length of vector (# items)
  +0x0240 | 00                      | uint8_t    | 0x00 (0)                                 | value[0]
  +0x0241 | 01                      | uint8_t    | 0x01 (1)                                 | value[1]
  +0x0242 | 02                      | uint8_t    | 0x02 (2)                                 | value[2]
  +0x0243 | 03                      | uint8_t    | 0x03 (3)                                 | value[3]
  +0x0244 | 04                      | uint8_t    | 0x04 (4)                                 | value[4]

padding:
  +0x0245 | 00 00 00                | uint8_t[3] | ...                                      | padding

string (MyGame.Example.Monster.name):
  +0x0248 | 09 00 00 00             | uint32_t   | 0x00000009 (9)                           | length of string
  +0x024C | 4D 79 4D 6F 6E 73 74 65 | char[9]    | MyMonste                                 | string literal
  +0x0254 | 72                      |            | r
  +0x0255 | 00                      | char       | 0x00 (0)                                 | string terminator

padding:
  +0x0256 | 00 00                   | uint8_t[2] | ..                                       | padding
