// Annotated Flatbuffer Binary
//
// Schema file: ../reflection/reflection.fbs
// Binary file: monster_test.bfbs

header:
  +0x0000 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x0020        | offset to root table `reflection.Schema`
  +0x0004 | 42 46 42 53             | char[4]    | BFBS                               | File Identifier

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

vtable (reflection.Schema):
  +0x000C | 14 00                   | uint16_t   | 0x0014 (20)                        | size of this vtable
  +0x000E | 20 00                   | uint16_t   | 0x0020 (32)                        | size of referring table
  +0x0010 | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `objects` (id: 0)
  +0x0012 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `enums` (id: 1)
  +0x0014 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `file_ident` (id: 2)
  +0x0016 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `file_ext` (id: 3)
  +0x0018 | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `root_table` (id: 4)
  +0x001A | 18 00                   | VOffset16  | 0x0018 (24)                        | offset to field `services` (id: 5)
  +0x001C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `advanced_features` (id: 6) <defaults to 0> (ULong)
  +0x001E | 1C 00                   | VOffset16  | 0x001C (28)                        | offset to field `fbs_files` (id: 7)

root_table (reflection.Schema):
  +0x0020 | 14 00 00 00             | SOffset32  | 0x00000014 (20) Loc: 0x000C        | offset to vtable
  +0x0024 | 58 00 00 00             | UOffset32  | 0x00000058 (88) Loc: 0x007C        | offset to field `objects` (vector)
  +0x0028 | 34 00 00 00             | UOffset32  | 0x00000034 (52) Loc: 0x005C        | offset to field `enums` (vector)
  +0x002C | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x0050        | offset to field `file_ident` (string)
  +0x0030 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x0048        | offset to field `file_ext` (string)
  +0x0034 | 70 0D 00 00             | UOffset32  | 0x00000D70 (3440) Loc: 0x0DA4      | offset to field `root_table` (table)
  +0x0038 | 08 00 00 00             | UOffset32  | 0x00000008 (8) Loc: 0x0040         | offset to field `services` (vector)
  +0x003C | 80 00 00 00             | UOffset32  | 0x00000080 (128) Loc: 0x00BC       | offset to field `fbs_files` (vector)

vector (reflection.Schema.services):
  +0x0040 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x0044 | DC 00 00 00             | UOffset32  | 0x000000DC (220) Loc: 0x0120       | offset to table[0]

string (reflection.Schema.file_ext):
  +0x0048 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x004C | 6D 6F 6E                | char[3]    | mon                                | string literal
  +0x004F | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.Schema.file_ident):
  +0x0050 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x0054 | 4D 4F 4E 53             | char[4]    | MONS                               | string literal
  +0x0058 | 00                      | char       | 0x00 (0)                           | string terminator

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

vector (reflection.Schema.enums):
  +0x005C | 07 00 00 00             | uint32_t   | 0x00000007 (7)                     | length of vector (# items)
  +0x0060 | D4 04 00 00             | UOffset32  | 0x000004D4 (1236) Loc: 0x0534      | offset to table[0]
  +0x0064 | 90 02 00 00             | UOffset32  | 0x00000290 (656) Loc: 0x02F4       | offset to table[1]
  +0x0068 | A8 03 00 00             | UOffset32  | 0x000003A8 (936) Loc: 0x0410       | offset to table[2]
  +0x006C | 30 08 00 00             | UOffset32  | 0x00000830 (2096) Loc: 0x089C      | offset to table[3]
  +0x0070 | 00 06 00 00             | UOffset32  | 0x00000600 (1536) Loc: 0x0670      | offset to table[4]
  +0x0074 | 0C 07 00 00             | UOffset32  | 0x0000070C (1804) Loc: 0x0780      | offset to table[5]
  +0x0078 | 14 0A 00 00             | UOffset32  | 0x00000A14 (2580) Loc: 0x0A8C      | offset to table[6]

vector (reflection.Schema.objects):
  +0x007C | 0F 00 00 00             | uint32_t   | 0x0000000F (15)                    | length of vector (# items)
  +0x0080 | 94 31 00 00             | UOffset32  | 0x00003194 (12692) Loc: 0x3214     | offset to table[0]
  +0x0084 | 20 0D 00 00             | UOffset32  | 0x00000D20 (3360) Loc: 0x0DA4      | offset to table[1]
  +0x0088 | 8C 2E 00 00             | UOffset32  | 0x00002E8C (11916) Loc: 0x2F14     | offset to table[2]
  +0x008C | 58 2F 00 00             | UOffset32  | 0x00002F58 (12120) Loc: 0x2FE4     | offset to table[3]
  +0x0090 | C0 30 00 00             | UOffset32  | 0x000030C0 (12480) Loc: 0x3150     | offset to table[4]
  +0x0094 | 48 30 00 00             | UOffset32  | 0x00003048 (12360) Loc: 0x30DC     | offset to table[5]
  +0x0098 | FC 34 00 00             | UOffset32  | 0x000034FC (13564) Loc: 0x3594     | offset to table[6]
  +0x009C | FC 33 00 00             | UOffset32  | 0x000033FC (13308) Loc: 0x3498     | offset to table[7]
  +0x00A0 | 88 0A 00 00             | UOffset32  | 0x00000A88 (2696) Loc: 0x0B28      | offset to table[8]
  +0x00A4 | 58 32 00 00             | UOffset32  | 0x00003258 (12888) Loc: 0x32FC     | offset to table[9]
  +0x00A8 | AC 35 00 00             | UOffset32  | 0x000035AC (13740) Loc: 0x3654     | offset to table[10]
  +0x00AC | DC 35 00 00             | UOffset32  | 0x000035DC (13788) Loc: 0x3688     | offset to table[11]
  +0x00B0 | B4 36 00 00             | UOffset32  | 0x000036B4 (14004) Loc: 0x3764     | offset to table[12]
  +0x00B4 | 58 37 00 00             | UOffset32  | 0x00003758 (14168) Loc: 0x380C     | offset to table[13]
  +0x00B8 | 20 36 00 00             | UOffset32  | 0x00003620 (13856) Loc: 0x36D8     | offset to table[14]

vector (reflection.Schema.fbs_files):
  +0x00BC | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of vector (# items)
  +0x00C0 | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x00F8        | offset to table[0]
  +0x00C4 | 1C 00 00 00             | UOffset32  | 0x0000001C (28) Loc: 0x00E0        | offset to table[1]
  +0x00C8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x00CC         | offset to table[2]

table (reflection.SchemaFile):
  +0x00CC | 4C C8 FF FF             | SOffset32  | 0xFFFFC84C (-14260) Loc: 0x3880    | offset to vtable
  +0x00D0 | CC 35 00 00             | UOffset32  | 0x000035CC (13772) Loc: 0x369C     | offset to field `filename` (string)
  +0x00D4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x00D8         | offset to field `included_filenames` (vector)

vector (reflection.SchemaFile.included_filenames):
  +0x00D8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x00DC | 10 36 00 00             | UOffset32  | 0x00003610 (13840) Loc: 0x36EC     | offset to string[0]

table (reflection.SchemaFile):
  +0x00E0 | 60 C8 FF FF             | SOffset32  | 0xFFFFC860 (-14240) Loc: 0x3880    | offset to vtable
  +0x00E4 | 44 37 00 00             | UOffset32  | 0x00003744 (14148) Loc: 0x3828     | offset to field `filename` (string)
  +0x00E8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x00EC         | offset to field `included_filenames` (vector)

vector (reflection.SchemaFile.included_filenames):
  +0x00EC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x00F0 | FC 35 00 00             | UOffset32  | 0x000035FC (13820) Loc: 0x36EC     | offset to string[0]
  +0x00F4 | 34 37 00 00             | UOffset32  | 0x00003734 (14132) Loc: 0x3828     | offset to string[1]

table (reflection.SchemaFile):
  +0x00F8 | 78 C8 FF FF             | SOffset32  | 0xFFFFC878 (-14216) Loc: 0x3880    | offset to vtable
  +0x00FC | F0 35 00 00             | UOffset32  | 0x000035F0 (13808) Loc: 0x36EC     | offset to field `filename` (string)
  +0x0100 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0104         | offset to field `included_filenames` (vector)

vector (reflection.SchemaFile.included_filenames):
  +0x0104 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x0108 | E4 35 00 00             | UOffset32  | 0x000035E4 (13796) Loc: 0x36EC     | offset to string[0]
  +0x010C | 1C 37 00 00             | UOffset32  | 0x0000371C (14108) Loc: 0x3828     | offset to string[1]

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

vtable (reflection.Service):
  +0x0112 | 0E 00                   | uint16_t   | 0x000E (14)                        | size of this vtable
  +0x0114 | 10 00                   | uint16_t   | 0x0010 (16)                        | size of referring table
  +0x0116 | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `name` (id: 0)
  +0x0118 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `calls` (id: 1)
  +0x011A | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `attributes` (id: 2) <null> (Vector)
  +0x011C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `documentation` (id: 3) <null> (Vector)
  +0x011E | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `declaration_file` (id: 4)

table (reflection.Service):
  +0x0120 | 0E 00 00 00             | SOffset32  | 0x0000000E (14) Loc: 0x0112        | offset to vtable
  +0x0124 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x0144        | offset to field `name` (string)
  +0x0128 | 08 00 00 00             | UOffset32  | 0x00000008 (8) Loc: 0x0130         | offset to field `calls` (vector)
  +0x012C | 70 35 00 00             | UOffset32  | 0x00003570 (13680) Loc: 0x369C     | offset to field `declaration_file` (string)

vector (reflection.Service.calls):
  +0x0130 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of vector (# items)
  +0x0134 | 70 01 00 00             | UOffset32  | 0x00000170 (368) Loc: 0x02A4       | offset to table[0]
  +0x0138 | E4 00 00 00             | UOffset32  | 0x000000E4 (228) Loc: 0x021C       | offset to table[1]
  +0x013C | 88 00 00 00             | UOffset32  | 0x00000088 (136) Loc: 0x01C4       | offset to table[2]
  +0x0140 | 28 00 00 00             | UOffset32  | 0x00000028 (40) Loc: 0x0168        | offset to table[3]

string (reflection.Service.name):
  +0x0144 | 1D 00 00 00             | uint32_t   | 0x0000001D (29)                    | length of string
  +0x0148 | 4D 79 47 61 6D 65 2E 45 | char[29]   | MyGame.E                           | string literal
  +0x0150 | 78 61 6D 70 6C 65 2E 4D |            | xample.M
  +0x0158 | 6F 6E 73 74 65 72 53 74 |            | onsterSt
  +0x0160 | 6F 72 61 67 65          |            | orage
  +0x0165 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.RPCCall):
  +0x0168 | D0 FE FF FF             | SOffset32  | 0xFFFFFED0 (-304) Loc: 0x0298      | offset to vtable
  +0x016C | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x01AC        | offset to field `name` (string)
  +0x0170 | 34 0C 00 00             | UOffset32  | 0x00000C34 (3124) Loc: 0x0DA4      | offset to field `request` (table)
  +0x0174 | 70 2E 00 00             | UOffset32  | 0x00002E70 (11888) Loc: 0x2FE4     | offset to field `response` (table)
  +0x0178 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x017C         | offset to field `attributes` (vector)

vector (reflection.RPCCall.attributes):
  +0x017C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x0180 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0184         | offset to table[0]

table (reflection.KeyValue):
  +0x0184 | 04 C9 FF FF             | SOffset32  | 0xFFFFC904 (-14076) Loc: 0x3880    | offset to vtable
  +0x0188 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x019C        | offset to field `key` (string)
  +0x018C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0190         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x0190 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x0194 | 62 69 64 69             | char[4]    | bidi                               | string literal
  +0x0198 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x019C | 09 00 00 00             | uint32_t   | 0x00000009 (9)                     | length of string
  +0x01A0 | 73 74 72 65 61 6D 69 6E | char[9]    | streamin                           | string literal
  +0x01A8 | 67                      |            | g
  +0x01A9 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.RPCCall.name):
  +0x01AC | 12 00 00 00             | uint32_t   | 0x00000012 (18)                    | length of string
  +0x01B0 | 47 65 74 4D 69 6E 4D 61 | char[18]   | GetMinMa                           | string literal
  +0x01B8 | 78 48 69 74 50 6F 69 6E |            | xHitPoin
  +0x01C0 | 74 73                   |            | ts
  +0x01C2 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.RPCCall):
  +0x01C4 | 2C FF FF FF             | SOffset32  | 0xFFFFFF2C (-212) Loc: 0x0298      | offset to vtable
  +0x01C8 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x0208        | offset to field `name` (string)
  +0x01CC | D8 0B 00 00             | UOffset32  | 0x00000BD8 (3032) Loc: 0x0DA4      | offset to field `request` (table)
  +0x01D0 | 14 2E 00 00             | UOffset32  | 0x00002E14 (11796) Loc: 0x2FE4     | offset to field `response` (table)
  +0x01D4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x01D8         | offset to field `attributes` (vector)

vector (reflection.RPCCall.attributes):
  +0x01D8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x01DC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x01E0         | offset to table[0]

table (reflection.KeyValue):
  +0x01E0 | 60 C9 FF FF             | SOffset32  | 0xFFFFC960 (-13984) Loc: 0x3880    | offset to vtable
  +0x01E4 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x01F8        | offset to field `key` (string)
  +0x01E8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x01EC         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x01EC | 06 00 00 00             | uint32_t   | 0x00000006 (6)                     | length of string
  +0x01F0 | 63 6C 69 65 6E 74       | char[6]    | client                             | string literal
  +0x01F6 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x01F8 | 09 00 00 00             | uint32_t   | 0x00000009 (9)                     | length of string
  +0x01FC | 73 74 72 65 61 6D 69 6E | char[9]    | streamin                           | string literal
  +0x0204 | 67                      |            | g
  +0x0205 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.RPCCall.name):
  +0x0208 | 0E 00 00 00             | uint32_t   | 0x0000000E (14)                    | length of string
  +0x020C | 47 65 74 4D 61 78 48 69 | char[14]   | GetMaxHi                           | string literal
  +0x0214 | 74 50 6F 69 6E 74       |            | tPoint
  +0x021A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.RPCCall):
  +0x021C | 84 FF FF FF             | SOffset32  | 0xFFFFFF84 (-124) Loc: 0x0298      | offset to vtable
  +0x0220 | 68 00 00 00             | UOffset32  | 0x00000068 (104) Loc: 0x0288       | offset to field `name` (string)
  +0x0224 | C0 2D 00 00             | UOffset32  | 0x00002DC0 (11712) Loc: 0x2FE4     | offset to field `request` (table)
  +0x0228 | 7C 0B 00 00             | UOffset32  | 0x00000B7C (2940) Loc: 0x0DA4      | offset to field `response` (table)
  +0x022C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0230         | offset to field `attributes` (vector)

vector (reflection.RPCCall.attributes):
  +0x0230 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x0234 | 30 00 00 00             | UOffset32  | 0x00000030 (48) Loc: 0x0264        | offset to table[0]
  +0x0238 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x023C         | offset to table[1]

table (reflection.KeyValue):
  +0x023C | BC C9 FF FF             | SOffset32  | 0xFFFFC9BC (-13892) Loc: 0x3880    | offset to vtable
  +0x0240 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x0254        | offset to field `key` (string)
  +0x0244 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0248         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x0248 | 06 00 00 00             | uint32_t   | 0x00000006 (6)                     | length of string
  +0x024C | 73 65 72 76 65 72       | char[6]    | server                             | string literal
  +0x0252 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x0254 | 09 00 00 00             | uint32_t   | 0x00000009 (9)                     | length of string
  +0x0258 | 73 74 72 65 61 6D 69 6E | char[9]    | streamin                           | string literal
  +0x0260 | 67                      |            | g
  +0x0261 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x0264 | E4 C9 FF FF             | SOffset32  | 0xFFFFC9E4 (-13852) Loc: 0x3880    | offset to vtable
  +0x0268 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x0278        | offset to field `key` (string)
  +0x026C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0270         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x0270 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x0274 | 30                      | char[1]    | 0                                  | string literal
  +0x0275 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x0278 | 0A 00 00 00             | uint32_t   | 0x0000000A (10)                    | length of string
  +0x027C | 69 64 65 6D 70 6F 74 65 | char[10]   | idempote                           | string literal
  +0x0284 | 6E 74                   |            | nt
  +0x0286 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.RPCCall.name):
  +0x0288 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x028C | 52 65 74 72 69 65 76 65 | char[8]    | Retrieve                           | string literal
  +0x0294 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.RPCCall):
  +0x0298 | 0C 00                   | uint16_t   | 0x000C (12)                        | size of this vtable
  +0x029A | 14 00                   | uint16_t   | 0x0014 (20)                        | size of referring table
  +0x029C | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `name` (id: 0)
  +0x029E | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `request` (id: 1)
  +0x02A0 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `response` (id: 2)
  +0x02A2 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `attributes` (id: 3)

table (reflection.RPCCall):
  +0x02A4 | 0C 00 00 00             | SOffset32  | 0x0000000C (12) Loc: 0x0298        | offset to vtable
  +0x02A8 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x02E8        | offset to field `name` (string)
  +0x02AC | F8 0A 00 00             | UOffset32  | 0x00000AF8 (2808) Loc: 0x0DA4      | offset to field `request` (table)
  +0x02B0 | 34 2D 00 00             | UOffset32  | 0x00002D34 (11572) Loc: 0x2FE4     | offset to field `response` (table)
  +0x02B4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x02B8         | offset to field `attributes` (vector)

vector (reflection.RPCCall.attributes):
  +0x02B8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x02BC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x02C0         | offset to table[0]

table (reflection.KeyValue):
  +0x02C0 | 40 CA FF FF             | SOffset32  | 0xFFFFCA40 (-13760) Loc: 0x3880    | offset to vtable
  +0x02C4 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x02D8        | offset to field `key` (string)
  +0x02C8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x02CC         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x02CC | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x02D0 | 6E 6F 6E 65             | char[4]    | none                               | string literal
  +0x02D4 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x02D8 | 09 00 00 00             | uint32_t   | 0x00000009 (9)                     | length of string
  +0x02DC | 73 74 72 65 61 6D 69 6E | char[9]    | streamin                           | string literal
  +0x02E4 | 67                      |            | g
  +0x02E5 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.RPCCall.name):
  +0x02E8 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x02EC | 53 74 6F 72 65          | char[5]    | Store                              | string literal
  +0x02F1 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Enum):
  +0x02F4 | D2 FD FF FF             | SOffset32  | 0xFFFFFDD2 (-558) Loc: 0x0522      | offset to vtable
  +0x02F8 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x02FB | 01                      | uint8_t    | 0x01 (1)                           | table field `is_union` (Bool)
  +0x02FC | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x0334        | offset to field `name` (string)
  +0x0300 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x0320        | offset to field `values` (vector)
  +0x0304 | 08 00 00 00             | UOffset32  | 0x00000008 (8) Loc: 0x030C         | offset to field `underlying_type` (table)
  +0x0308 | 94 33 00 00             | UOffset32  | 0x00003394 (13204) Loc: 0x369C     | offset to field `declaration_file` (string)

table (reflection.Type):
  +0x030C | A8 CD FF FF             | SOffset32  | 0xFFFFCDA8 (-12888) Loc: 0x3564    | offset to vtable
  +0x0310 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0313 | 01                      | uint8_t    | 0x01 (1)                           | table field `base_type` (Byte)
  +0x0314 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `index` (Int)
  +0x0318 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x031C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

vector (reflection.Enum.values):
  +0x0320 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of vector (# items)
  +0x0324 | C8 00 00 00             | UOffset32  | 0x000000C8 (200) Loc: 0x03EC       | offset to table[0]
  +0x0328 | 94 00 00 00             | UOffset32  | 0x00000094 (148) Loc: 0x03BC       | offset to table[1]
  +0x032C | 60 00 00 00             | UOffset32  | 0x00000060 (96) Loc: 0x038C        | offset to table[2]
  +0x0330 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x035C        | offset to table[3]

string (reflection.Enum.name):
  +0x0334 | 22 00 00 00             | uint32_t   | 0x00000022 (34)                    | length of string
  +0x0338 | 4D 79 47 61 6D 65 2E 45 | char[34]   | MyGame.E                           | string literal
  +0x0340 | 78 61 6D 70 6C 65 2E 41 |            | xample.A
  +0x0348 | 6E 79 41 6D 62 69 67 75 |            | nyAmbigu
  +0x0350 | 6F 75 73 41 6C 69 61 73 |            | ousAlias
  +0x0358 | 65 73                   |            | es
  +0x035A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x035C | 1C F9 FF FF             | SOffset32  | 0xFFFFF91C (-1764) Loc: 0x0A40     | offset to vtable
  +0x0360 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x0384        | offset to field `name` (string)
  +0x0364 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x0374        | offset to field `union_type` (table)
  +0x0368 | 03 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000003 (3)             | table field `value` (Long)
  +0x0370 | 00 00 00 00             | uint8_t[4] | ....                               | padding

table (reflection.Type):
  +0x0374 | A4 CB FF FF             | SOffset32  | 0xFFFFCBA4 (-13404) Loc: 0x37D0    | offset to vtable
  +0x0378 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x037B | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x037C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `index` (Int)
  +0x0380 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x0384 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x0388 | 4D 33                   | char[2]    | M3                                 | string literal
  +0x038A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x038C | 4C F9 FF FF             | SOffset32  | 0xFFFFF94C (-1716) Loc: 0x0A40     | offset to vtable
  +0x0390 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x03B4        | offset to field `name` (string)
  +0x0394 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x03A4        | offset to field `union_type` (table)
  +0x0398 | 02 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000002 (2)             | table field `value` (Long)
  +0x03A0 | 00 00 00 00             | uint8_t[4] | ....                               | padding

table (reflection.Type):
  +0x03A4 | D4 CB FF FF             | SOffset32  | 0xFFFFCBD4 (-13356) Loc: 0x37D0    | offset to vtable
  +0x03A8 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x03AB | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x03AC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `index` (Int)
  +0x03B0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x03B4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x03B8 | 4D 32                   | char[2]    | M2                                 | string literal
  +0x03BA | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x03BC | 7C F9 FF FF             | SOffset32  | 0xFFFFF97C (-1668) Loc: 0x0A40     | offset to vtable
  +0x03C0 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x03E4        | offset to field `name` (string)
  +0x03C4 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x03D4        | offset to field `union_type` (table)
  +0x03C8 | 01 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000001 (1)             | table field `value` (Long)
  +0x03D0 | 00 00 00 00             | uint8_t[4] | ....                               | padding

table (reflection.Type):
  +0x03D4 | 04 CC FF FF             | SOffset32  | 0xFFFFCC04 (-13308) Loc: 0x37D0    | offset to vtable
  +0x03D8 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x03DB | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x03DC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `index` (Int)
  +0x03E0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x03E4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x03E8 | 4D 31                   | char[2]    | M1                                 | string literal
  +0x03EA | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x03EC | 08 F9 FF FF             | SOffset32  | 0xFFFFF908 (-1784) Loc: 0x0AE4     | offset to vtable
  +0x03F0 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x0404        | offset to field `name` (string)
  +0x03F4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x03F8         | offset to field `union_type` (table)

table (reflection.Type):
  +0x03F8 | FC F8 FF FF             | SOffset32  | 0xFFFFF8FC (-1796) Loc: 0x0AFC     | offset to vtable
  +0x03FC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x0400 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x0404 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x0408 | 4E 4F 4E 45             | char[4]    | NONE                               | string literal
  +0x040C | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Enum):
  +0x0410 | EE FE FF FF             | SOffset32  | 0xFFFFFEEE (-274) Loc: 0x0522      | offset to vtable
  +0x0414 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0417 | 01                      | uint8_t    | 0x01 (1)                           | table field `is_union` (Bool)
  +0x0418 | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x0450        | offset to field `name` (string)
  +0x041C | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x043C        | offset to field `values` (vector)
  +0x0420 | 08 00 00 00             | UOffset32  | 0x00000008 (8) Loc: 0x0428         | offset to field `underlying_type` (table)
  +0x0424 | 78 32 00 00             | UOffset32  | 0x00003278 (12920) Loc: 0x369C     | offset to field `declaration_file` (string)

table (reflection.Type):
  +0x0428 | C4 CE FF FF             | SOffset32  | 0xFFFFCEC4 (-12604) Loc: 0x3564    | offset to vtable
  +0x042C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x042F | 01                      | uint8_t    | 0x01 (1)                           | table field `base_type` (Byte)
  +0x0430 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | table field `index` (Int)
  +0x0434 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x0438 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

vector (reflection.Enum.values):
  +0x043C | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of vector (# items)
  +0x0440 | C0 00 00 00             | UOffset32  | 0x000000C0 (192) Loc: 0x0500       | offset to table[0]
  +0x0444 | 90 00 00 00             | UOffset32  | 0x00000090 (144) Loc: 0x04D4       | offset to table[1]
  +0x0448 | 5C 00 00 00             | UOffset32  | 0x0000005C (92) Loc: 0x04A4        | offset to table[2]
  +0x044C | 28 00 00 00             | UOffset32  | 0x00000028 (40) Loc: 0x0474        | offset to table[3]

string (reflection.Enum.name):
  +0x0450 | 1F 00 00 00             | uint32_t   | 0x0000001F (31)                    | length of string
  +0x0454 | 4D 79 47 61 6D 65 2E 45 | char[31]   | MyGame.E                           | string literal
  +0x045C | 78 61 6D 70 6C 65 2E 41 |            | xample.A
  +0x0464 | 6E 79 55 6E 69 71 75 65 |            | nyUnique
  +0x046C | 41 6C 69 61 73 65 73    |            | Aliases
  +0x0473 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x0474 | 34 FA FF FF             | SOffset32  | 0xFFFFFA34 (-1484) Loc: 0x0A40     | offset to vtable
  +0x0478 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x049C        | offset to field `name` (string)
  +0x047C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x048C        | offset to field `union_type` (table)
  +0x0480 | 03 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000003 (3)             | table field `value` (Long)
  +0x0488 | 00 00 00 00             | uint8_t[4] | ....                               | padding

table (reflection.Type):
  +0x048C | BC CC FF FF             | SOffset32  | 0xFFFFCCBC (-13124) Loc: 0x37D0    | offset to vtable
  +0x0490 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0493 | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x0494 | 0A 00 00 00             | uint32_t   | 0x0000000A (10)                    | table field `index` (Int)
  +0x0498 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x049C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x04A0 | 4D 32                   | char[2]    | M2                                 | string literal
  +0x04A2 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x04A4 | 64 FA FF FF             | SOffset32  | 0xFFFFFA64 (-1436) Loc: 0x0A40     | offset to vtable
  +0x04A8 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x04CC        | offset to field `name` (string)
  +0x04AC | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x04BC        | offset to field `union_type` (table)
  +0x04B0 | 02 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000002 (2)             | table field `value` (Long)
  +0x04B8 | 00 00 00 00             | uint8_t[4] | ....                               | padding

table (reflection.Type):
  +0x04BC | EC CC FF FF             | SOffset32  | 0xFFFFCCEC (-13076) Loc: 0x37D0    | offset to vtable
  +0x04C0 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x04C3 | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x04C4 | 07 00 00 00             | uint32_t   | 0x00000007 (7)                     | table field `index` (Int)
  +0x04C8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x04CC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x04D0 | 54 53                   | char[2]    | TS                                 | string literal
  +0x04D2 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x04D4 | D4 FC FF FF             | SOffset32  | 0xFFFFFCD4 (-812) Loc: 0x0800      | offset to vtable
  +0x04D8 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x04F8        | offset to field `name` (string)
  +0x04DC | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x04E8        | offset to field `union_type` (table)
  +0x04E0 | 01 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000001 (1)             | table field `value` (Long)

table (reflection.Type):
  +0x04E8 | 18 CD FF FF             | SOffset32  | 0xFFFFCD18 (-13032) Loc: 0x37D0    | offset to vtable
  +0x04EC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x04EF | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x04F0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `index` (Int)
  +0x04F4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x04F8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x04FC | 4D                      | char[1]    | M                                  | string literal
  +0x04FD | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.EnumVal):
  +0x0500 | 1C FA FF FF             | SOffset32  | 0xFFFFFA1C (-1508) Loc: 0x0AE4     | offset to vtable
  +0x0504 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x0518        | offset to field `name` (string)
  +0x0508 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x050C         | offset to field `union_type` (table)

table (reflection.Type):
  +0x050C | 10 FA FF FF             | SOffset32  | 0xFFFFFA10 (-1520) Loc: 0x0AFC     | offset to vtable
  +0x0510 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x0514 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x0518 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x051C | 4E 4F 4E 45             | char[4]    | NONE                               | string literal
  +0x0520 | 00                      | char       | 0x00 (0)                           | string terminator

vtable (reflection.Enum):
  +0x0522 | 12 00                   | uint16_t   | 0x0012 (18)                        | size of this vtable
  +0x0524 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of referring table
  +0x0526 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x0528 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `values` (id: 1)
  +0x052A | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `is_union` (id: 2)
  +0x052C | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `underlying_type` (id: 3)
  +0x052E | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `attributes` (id: 4) <null> (Vector)
  +0x0530 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `documentation` (id: 5) <null> (Vector)
  +0x0532 | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `declaration_file` (id: 6)

table (reflection.Enum):
  +0x0534 | 12 00 00 00             | SOffset32  | 0x00000012 (18) Loc: 0x0522        | offset to vtable
  +0x0538 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x053B | 01                      | uint8_t    | 0x01 (1)                           | table field `is_union` (Bool)
  +0x053C | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x0574        | offset to field `name` (string)
  +0x0540 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x0560        | offset to field `values` (vector)
  +0x0544 | 08 00 00 00             | UOffset32  | 0x00000008 (8) Loc: 0x054C         | offset to field `underlying_type` (table)
  +0x0548 | 54 31 00 00             | UOffset32  | 0x00003154 (12628) Loc: 0x369C     | offset to field `declaration_file` (string)

table (reflection.Type):
  +0x054C | E8 CF FF FF             | SOffset32  | 0xFFFFCFE8 (-12312) Loc: 0x3564    | offset to vtable
  +0x0550 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0553 | 01                      | uint8_t    | 0x01 (1)                           | table field `base_type` (Byte)
  +0x0554 | 00 00 00 00             | uint32_t   | 0x00000000 (0)                     | table field `index` (Int)
  +0x0558 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x055C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

vector (reflection.Enum.values):
  +0x0560 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of vector (# items)
  +0x0564 | D8 00 00 00             | UOffset32  | 0x000000D8 (216) Loc: 0x063C       | offset to table[0]
  +0x0568 | A4 00 00 00             | UOffset32  | 0x000000A4 (164) Loc: 0x060C       | offset to table[1]
  +0x056C | 60 00 00 00             | UOffset32  | 0x00000060 (96) Loc: 0x05CC        | offset to table[2]
  +0x0570 | 1C 00 00 00             | UOffset32  | 0x0000001C (28) Loc: 0x058C        | offset to table[3]

string (reflection.Enum.name):
  +0x0574 | 12 00 00 00             | uint32_t   | 0x00000012 (18)                    | length of string
  +0x0578 | 4D 79 47 61 6D 65 2E 45 | char[18]   | MyGame.E                           | string literal
  +0x0580 | 78 61 6D 70 6C 65 2E 41 |            | xample.A
  +0x0588 | 6E 79                   |            | ny
  +0x058A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x058C | 8C FD FF FF             | SOffset32  | 0xFFFFFD8C (-628) Loc: 0x0800      | offset to vtable
  +0x0590 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x05B0        | offset to field `name` (string)
  +0x0594 | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x05A0        | offset to field `union_type` (table)
  +0x0598 | 03 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000003 (3)             | table field `value` (Long)

table (reflection.Type):
  +0x05A0 | D0 CD FF FF             | SOffset32  | 0xFFFFCDD0 (-12848) Loc: 0x37D0    | offset to vtable
  +0x05A4 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x05A7 | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x05A8 | 0A 00 00 00             | uint32_t   | 0x0000000A (10)                    | table field `index` (Int)
  +0x05AC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x05B0 | 17 00 00 00             | uint32_t   | 0x00000017 (23)                    | length of string
  +0x05B4 | 4D 79 47 61 6D 65 5F 45 | char[23]   | MyGame_E                           | string literal
  +0x05BC | 78 61 6D 70 6C 65 32 5F |            | xample2_
  +0x05C4 | 4D 6F 6E 73 74 65 72    |            | Monster
  +0x05CB | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x05CC | CC FD FF FF             | SOffset32  | 0xFFFFFDCC (-564) Loc: 0x0800      | offset to vtable
  +0x05D0 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x05F0        | offset to field `name` (string)
  +0x05D4 | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x05E0        | offset to field `union_type` (table)
  +0x05D8 | 02 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000002 (2)             | table field `value` (Long)

table (reflection.Type):
  +0x05E0 | 10 CE FF FF             | SOffset32  | 0xFFFFCE10 (-12784) Loc: 0x37D0    | offset to vtable
  +0x05E4 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x05E7 | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x05E8 | 07 00 00 00             | uint32_t   | 0x00000007 (7)                     | table field `index` (Int)
  +0x05EC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x05F0 | 17 00 00 00             | uint32_t   | 0x00000017 (23)                    | length of string
  +0x05F4 | 54 65 73 74 53 69 6D 70 | char[23]   | TestSimp                           | string literal
  +0x05FC | 6C 65 54 61 62 6C 65 57 |            | leTableW
  +0x0604 | 69 74 68 45 6E 75 6D    |            | ithEnum
  +0x060B | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x060C | 0C FE FF FF             | SOffset32  | 0xFFFFFE0C (-500) Loc: 0x0800      | offset to vtable
  +0x0610 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x0630        | offset to field `name` (string)
  +0x0614 | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x0620        | offset to field `union_type` (table)
  +0x0618 | 01 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000001 (1)             | table field `value` (Long)

table (reflection.Type):
  +0x0620 | 50 CE FF FF             | SOffset32  | 0xFFFFCE50 (-12720) Loc: 0x37D0    | offset to vtable
  +0x0624 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0627 | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x0628 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `index` (Int)
  +0x062C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x0630 | 07 00 00 00             | uint32_t   | 0x00000007 (7)                     | length of string
  +0x0634 | 4D 6F 6E 73 74 65 72    | char[7]    | Monster                            | string literal
  +0x063B | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x063C | 58 FB FF FF             | SOffset32  | 0xFFFFFB58 (-1192) Loc: 0x0AE4     | offset to vtable
  +0x0640 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x0654        | offset to field `name` (string)
  +0x0644 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0648         | offset to field `union_type` (table)

table (reflection.Type):
  +0x0648 | 4C FB FF FF             | SOffset32  | 0xFFFFFB4C (-1204) Loc: 0x0AFC     | offset to vtable
  +0x064C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x0650 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x0654 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x0658 | 4E 4F 4E 45             | char[4]    | NONE                               | string literal
  +0x065C | 00                      | char       | 0x00 (0)                           | string terminator

vtable (reflection.Enum):
  +0x065E | 12 00                   | uint16_t   | 0x0012 (18)                        | size of this vtable
  +0x0660 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of referring table
  +0x0662 | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `name` (id: 0)
  +0x0664 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `values` (id: 1)
  +0x0666 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `is_union` (id: 2) <defaults to 0> (Bool)
  +0x0668 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `underlying_type` (id: 3)
  +0x066A | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `attributes` (id: 4)
  +0x066C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `documentation` (id: 5) <null> (Vector)
  +0x066E | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `declaration_file` (id: 6)

table (reflection.Enum):
  +0x0670 | 12 00 00 00             | SOffset32  | 0x00000012 (18) Loc: 0x065E        | offset to vtable
  +0x0674 | 64 00 00 00             | UOffset32  | 0x00000064 (100) Loc: 0x06D8       | offset to field `name` (string)
  +0x0678 | 50 00 00 00             | UOffset32  | 0x00000050 (80) Loc: 0x06C8        | offset to field `values` (vector)
  +0x067C | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x06B4        | offset to field `underlying_type` (table)
  +0x0680 | 08 00 00 00             | UOffset32  | 0x00000008 (8) Loc: 0x0688         | offset to field `attributes` (vector)
  +0x0684 | 18 30 00 00             | UOffset32  | 0x00003018 (12312) Loc: 0x369C     | offset to field `declaration_file` (string)

vector (reflection.Enum.attributes):
  +0x0688 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x068C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0690         | offset to table[0]

table (reflection.KeyValue):
  +0x0690 | 10 CE FF FF             | SOffset32  | 0xFFFFCE10 (-12784) Loc: 0x3880    | offset to vtable
  +0x0694 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x06A4        | offset to field `key` (string)
  +0x0698 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x069C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x069C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x06A0 | 30                      | char[1]    | 0                                  | string literal
  +0x06A1 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x06A4 | 09 00 00 00             | uint32_t   | 0x00000009 (9)                     | length of string
  +0x06A8 | 62 69 74 5F 66 6C 61 67 | char[9]    | bit_flag                           | string literal
  +0x06B0 | 73                      |            | s
  +0x06B1 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x06B4 | 50 D1 FF FF             | SOffset32  | 0xFFFFD150 (-11952) Loc: 0x3564    | offset to vtable
  +0x06B8 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x06BB | 0A                      | uint8_t    | 0x0A (10)                          | table field `base_type` (Byte)
  +0x06BC | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `index` (Int)
  +0x06C0 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x06C4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

vector (reflection.Enum.values):
  +0x06C8 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of vector (# items)
  +0x06CC | 88 00 00 00             | UOffset32  | 0x00000088 (136) Loc: 0x0754       | offset to table[0]
  +0x06D0 | 54 00 00 00             | UOffset32  | 0x00000054 (84) Loc: 0x0724        | offset to table[1]
  +0x06D4 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x06F4        | offset to table[2]

string (reflection.Enum.name):
  +0x06D8 | 17 00 00 00             | uint32_t   | 0x00000017 (23)                    | length of string
  +0x06DC | 4D 79 47 61 6D 65 2E 45 | char[23]   | MyGame.E                           | string literal
  +0x06E4 | 78 61 6D 70 6C 65 2E 4C |            | xample.L
  +0x06EC | 6F 6E 67 45 6E 75 6D    |            | ongEnum
  +0x06F3 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x06F4 | B4 FC FF FF             | SOffset32  | 0xFFFFFCB4 (-844) Loc: 0x0A40      | offset to vtable
  +0x06F8 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x0718        | offset to field `name` (string)
  +0x06FC | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x070C        | offset to field `union_type` (table)
  +0x0700 | 00 00 00 00 00 01 00 00 | int64_t    | 0x0000010000000000 (1099511627776) | table field `value` (Long)
  +0x0708 | 00 00 00 00             | uint8_t[4] | ....                               | padding

table (reflection.Type):
  +0x070C | 10 FC FF FF             | SOffset32  | 0xFFFFFC10 (-1008) Loc: 0x0AFC     | offset to vtable
  +0x0710 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x0714 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x0718 | 07 00 00 00             | uint32_t   | 0x00000007 (7)                     | length of string
  +0x071C | 4C 6F 6E 67 42 69 67    | char[7]    | LongBig                            | string literal
  +0x0723 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x0724 | E4 FC FF FF             | SOffset32  | 0xFFFFFCE4 (-796) Loc: 0x0A40      | offset to vtable
  +0x0728 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x0748        | offset to field `name` (string)
  +0x072C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x073C        | offset to field `union_type` (table)
  +0x0730 | 04 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000004 (4)             | table field `value` (Long)
  +0x0738 | 00 00 00 00             | uint8_t[4] | ....                               | padding

table (reflection.Type):
  +0x073C | 40 FC FF FF             | SOffset32  | 0xFFFFFC40 (-960) Loc: 0x0AFC      | offset to vtable
  +0x0740 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x0744 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x0748 | 07 00 00 00             | uint32_t   | 0x00000007 (7)                     | length of string
  +0x074C | 4C 6F 6E 67 54 77 6F    | char[7]    | LongTwo                            | string literal
  +0x0753 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x0754 | 54 FF FF FF             | SOffset32  | 0xFFFFFF54 (-172) Loc: 0x0800      | offset to vtable
  +0x0758 | 1C 00 00 00             | UOffset32  | 0x0000001C (28) Loc: 0x0774        | offset to field `name` (string)
  +0x075C | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x0768        | offset to field `union_type` (table)
  +0x0760 | 02 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000002 (2)             | table field `value` (Long)

table (reflection.Type):
  +0x0768 | 6C FC FF FF             | SOffset32  | 0xFFFFFC6C (-916) Loc: 0x0AFC      | offset to vtable
  +0x076C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x0770 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x0774 | 07 00 00 00             | uint32_t   | 0x00000007 (7)                     | length of string
  +0x0778 | 4C 6F 6E 67 4F 6E 65    | char[7]    | LongOne                            | string literal
  +0x077F | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Enum):
  +0x0780 | 06 FD FF FF             | SOffset32  | 0xFFFFFD06 (-762) Loc: 0x0A7A      | offset to vtable
  +0x0784 | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x07BC        | offset to field `name` (string)
  +0x0788 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x07A8        | offset to field `values` (vector)
  +0x078C | 08 00 00 00             | UOffset32  | 0x00000008 (8) Loc: 0x0794         | offset to field `underlying_type` (table)
  +0x0790 | 0C 2F 00 00             | UOffset32  | 0x00002F0C (12044) Loc: 0x369C     | offset to field `declaration_file` (string)

table (reflection.Type):
  +0x0794 | 30 D2 FF FF             | SOffset32  | 0xFFFFD230 (-11728) Loc: 0x3564    | offset to vtable
  +0x0798 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x079B | 03                      | uint8_t    | 0x03 (3)                           | table field `base_type` (Byte)
  +0x079C | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | table field `index` (Int)
  +0x07A0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x07A4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

vector (reflection.Enum.values):
  +0x07A8 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of vector (# items)
  +0x07AC | B0 00 00 00             | UOffset32  | 0x000000B0 (176) Loc: 0x085C       | offset to table[0]
  +0x07B0 | 88 00 00 00             | UOffset32  | 0x00000088 (136) Loc: 0x0838       | offset to table[1]
  +0x07B4 | 58 00 00 00             | UOffset32  | 0x00000058 (88) Loc: 0x080C        | offset to table[2]
  +0x07B8 | 1C 00 00 00             | UOffset32  | 0x0000001C (28) Loc: 0x07D4        | offset to table[3]

string (reflection.Enum.name):
  +0x07BC | 13 00 00 00             | uint32_t   | 0x00000013 (19)                    | length of string
  +0x07C0 | 4D 79 47 61 6D 65 2E 45 | char[19]   | MyGame.E                           | string literal
  +0x07C8 | 78 61 6D 70 6C 65 2E 52 |            | xample.R
  +0x07D0 | 61 63 65                |            | ace
  +0x07D3 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.EnumVal):
  +0x07D4 | 94 FD FF FF             | SOffset32  | 0xFFFFFD94 (-620) Loc: 0x0A40      | offset to vtable
  +0x07D8 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x07F8        | offset to field `name` (string)
  +0x07DC | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x07EC        | offset to field `union_type` (table)
  +0x07E0 | 02 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000002 (2)             | table field `value` (Long)
  +0x07E8 | 00 00 00 00             | uint8_t[4] | ....                               | padding

table (reflection.Type):
  +0x07EC | F0 FC FF FF             | SOffset32  | 0xFFFFFCF0 (-784) Loc: 0x0AFC      | offset to vtable
  +0x07F0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x07F4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x07F8 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x07FC | 45 6C 66                | char[3]    | Elf                                | string literal
  +0x07FF | 00                      | char       | 0x00 (0)                           | string terminator

vtable (reflection.EnumVal):
  +0x0800 | 0C 00                   | uint16_t   | 0x000C (12)                        | size of this vtable
  +0x0802 | 14 00                   | uint16_t   | 0x0014 (20)                        | size of referring table
  +0x0804 | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `name` (id: 0)
  +0x0806 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `value` (id: 1)
  +0x0808 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `object` (id: 2) <null> (Obj)
  +0x080A | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `union_type` (id: 3)

table (reflection.EnumVal):
  +0x080C | 0C 00 00 00             | SOffset32  | 0x0000000C (12) Loc: 0x0800        | offset to vtable
  +0x0810 | 1C 00 00 00             | UOffset32  | 0x0000001C (28) Loc: 0x082C        | offset to field `name` (string)
  +0x0814 | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x0820        | offset to field `union_type` (table)
  +0x0818 | 01 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000001 (1)             | table field `value` (Long)

table (reflection.Type):
  +0x0820 | 24 FD FF FF             | SOffset32  | 0xFFFFFD24 (-732) Loc: 0x0AFC      | offset to vtable
  +0x0824 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x0828 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x082C | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x0830 | 44 77 61 72 66          | char[5]    | Dwarf                              | string literal
  +0x0835 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.EnumVal):
  +0x0838 | 54 FD FF FF             | SOffset32  | 0xFFFFFD54 (-684) Loc: 0x0AE4      | offset to vtable
  +0x083C | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x0850        | offset to field `name` (string)
  +0x0840 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0844         | offset to field `union_type` (table)

table (reflection.Type):
  +0x0844 | 48 FD FF FF             | SOffset32  | 0xFFFFFD48 (-696) Loc: 0x0AFC      | offset to vtable
  +0x0848 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x084C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x0850 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x0854 | 48 75 6D 61 6E          | char[5]    | Human                              | string literal
  +0x0859 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.EnumVal):
  +0x085C | 1C FE FF FF             | SOffset32  | 0xFFFFFE1C (-484) Loc: 0x0A40      | offset to vtable
  +0x0860 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x0880        | offset to field `name` (string)
  +0x0864 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x0874        | offset to field `union_type` (table)
  +0x0868 | FF FF FF FF FF FF FF FF | int64_t    | 0xFFFFFFFFFFFFFFFF (-1)            | table field `value` (Long)
  +0x0870 | 00 00 00 00             | uint8_t[4] | ....                               | padding

table (reflection.Type):
  +0x0874 | 78 FD FF FF             | SOffset32  | 0xFFFFFD78 (-648) Loc: 0x0AFC      | offset to vtable
  +0x0878 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x087C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x0880 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x0884 | 4E 6F 6E 65             | char[4]    | None                               | string literal
  +0x0888 | 00                      | char       | 0x00 (0)                           | string terminator

vtable (reflection.Enum):
  +0x088A | 12 00                   | uint16_t   | 0x0012 (18)                        | size of this vtable
  +0x088C | 1C 00                   | uint16_t   | 0x001C (28)                        | size of referring table
  +0x088E | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `name` (id: 0)
  +0x0890 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `values` (id: 1)
  +0x0892 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `is_union` (id: 2) <defaults to 0> (Bool)
  +0x0894 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `underlying_type` (id: 3)
  +0x0896 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `attributes` (id: 4)
  +0x0898 | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `documentation` (id: 5)
  +0x089A | 18 00                   | VOffset16  | 0x0018 (24)                        | offset to field `declaration_file` (id: 6)

table (reflection.Enum):
  +0x089C | 12 00 00 00             | SOffset32  | 0x00000012 (18) Loc: 0x088A        | offset to vtable
  +0x08A0 | 9C 00 00 00             | UOffset32  | 0x0000009C (156) Loc: 0x093C       | offset to field `name` (string)
  +0x08A4 | 88 00 00 00             | UOffset32  | 0x00000088 (136) Loc: 0x092C       | offset to field `values` (vector)
  +0x08A8 | 70 00 00 00             | UOffset32  | 0x00000070 (112) Loc: 0x0918       | offset to field `underlying_type` (table)
  +0x08AC | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x08EC        | offset to field `attributes` (vector)
  +0x08B0 | 08 00 00 00             | UOffset32  | 0x00000008 (8) Loc: 0x08B8         | offset to field `documentation` (vector)
  +0x08B4 | E8 2D 00 00             | UOffset32  | 0x00002DE8 (11752) Loc: 0x369C     | offset to field `declaration_file` (string)

vector (reflection.Enum.documentation):
  +0x08B8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x08BC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x08C0         | offset to string[0]

string (reflection.Enum.documentation):
  +0x08C0 | 27 00 00 00             | uint32_t   | 0x00000027 (39)                    | length of string
  +0x08C4 | 20 43 6F 6D 70 6F 73 69 | char[39]   |  Composi                           | string literal
  +0x08CC | 74 65 20 63 6F 6D 70 6F |            | te compo
  +0x08D4 | 6E 65 6E 74 73 20 6F 66 |            | nents of
  +0x08DC | 20 4D 6F 6E 73 74 65 72 |            |  Monster
  +0x08E4 | 20 63 6F 6C 6F 72 2E    |            |  color.
  +0x08EB | 00                      | char       | 0x00 (0)                           | string terminator

vector (reflection.Enum.attributes):
  +0x08EC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x08F0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x08F4         | offset to table[0]

table (reflection.KeyValue):
  +0x08F4 | 74 D0 FF FF             | SOffset32  | 0xFFFFD074 (-12172) Loc: 0x3880    | offset to vtable
  +0x08F8 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x0908        | offset to field `key` (string)
  +0x08FC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0900         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x0900 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x0904 | 30                      | char[1]    | 0                                  | string literal
  +0x0905 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x0908 | 09 00 00 00             | uint32_t   | 0x00000009 (9)                     | length of string
  +0x090C | 62 69 74 5F 66 6C 61 67 | char[9]    | bit_flag                           | string literal
  +0x0914 | 73                      |            | s
  +0x0915 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x0918 | B4 D3 FF FF             | SOffset32  | 0xFFFFD3B4 (-11340) Loc: 0x3564    | offset to vtable
  +0x091C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x091F | 04                      | uint8_t    | 0x04 (4)                           | table field `base_type` (Byte)
  +0x0920 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | table field `index` (Int)
  +0x0924 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x0928 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

vector (reflection.Enum.values):
  +0x092C | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of vector (# items)
  +0x0930 | 1C 01 00 00             | UOffset32  | 0x0000011C (284) Loc: 0x0A4C       | offset to table[0]
  +0x0934 | 8C 00 00 00             | UOffset32  | 0x0000008C (140) Loc: 0x09C0       | offset to table[1]
  +0x0938 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x0958        | offset to table[2]

string (reflection.Enum.name):
  +0x093C | 14 00 00 00             | uint32_t   | 0x00000014 (20)                    | length of string
  +0x0940 | 4D 79 47 61 6D 65 2E 45 | char[20]   | MyGame.E                           | string literal
  +0x0948 | 78 61 6D 70 6C 65 2E 43 |            | xample.C
  +0x0950 | 6F 6C 6F 72             |            | olor
  +0x0954 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.EnumVal):
  +0x0958 | A6 FF FF FF             | SOffset32  | 0xFFFFFFA6 (-90) Loc: 0x09B2       | offset to vtable
  +0x095C | 4C 00 00 00             | UOffset32  | 0x0000004C (76) Loc: 0x09A8        | offset to field `name` (string)
  +0x0960 | 3C 00 00 00             | UOffset32  | 0x0000003C (60) Loc: 0x099C        | offset to field `union_type` (table)
  +0x0964 | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x0970        | offset to field `documentation` (vector)
  +0x0968 | 08 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000008 (8)             | table field `value` (Long)

vector (reflection.EnumVal.documentation):
  +0x0970 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x0974 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0978         | offset to string[0]

string (reflection.EnumVal.documentation):
  +0x0978 | 1C 00 00 00             | uint32_t   | 0x0000001C (28)                    | length of string
  +0x097C | 20 5C 62 72 69 65 66 20 | char[28]   |  \brief                            | string literal
  +0x0984 | 63 6F 6C 6F 72 20 42 6C |            | color Bl
  +0x098C | 75 65 20 28 31 75 20 3C |            | ue (1u <
  +0x0994 | 3C 20 33 29             |            | < 3)
  +0x0998 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x099C | A0 FE FF FF             | SOffset32  | 0xFFFFFEA0 (-352) Loc: 0x0AFC      | offset to vtable
  +0x09A0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x09A4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x09A8 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x09AC | 42 6C 75 65             | char[4]    | Blue                               | string literal
  +0x09B0 | 00                      | char       | 0x00 (0)                           | string terminator

vtable (reflection.EnumVal):
  +0x09B2 | 0E 00                   | uint16_t   | 0x000E (14)                        | size of this vtable
  +0x09B4 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of referring table
  +0x09B6 | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `name` (id: 0)
  +0x09B8 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `value` (id: 1)
  +0x09BA | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `object` (id: 2) <null> (Obj)
  +0x09BC | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `union_type` (id: 3)
  +0x09BE | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `documentation` (id: 4)

table (reflection.EnumVal):
  +0x09C0 | 0E 00 00 00             | SOffset32  | 0x0000000E (14) Loc: 0x09B2        | offset to vtable
  +0x09C4 | 70 00 00 00             | UOffset32  | 0x00000070 (112) Loc: 0x0A34       | offset to field `name` (string)
  +0x09C8 | 60 00 00 00             | UOffset32  | 0x00000060 (96) Loc: 0x0A28        | offset to field `union_type` (table)
  +0x09CC | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x09D8        | offset to field `documentation` (vector)
  +0x09D0 | 02 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000002 (2)             | table field `value` (Long)

vector (reflection.EnumVal.documentation):
  +0x09D8 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x09DC | 34 00 00 00             | UOffset32  | 0x00000034 (52) Loc: 0x0A10        | offset to string[0]
  +0x09E0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x09E4         | offset to string[1]

string (reflection.EnumVal.documentation):
  +0x09E4 | 27 00 00 00             | uint32_t   | 0x00000027 (39)                    | length of string
  +0x09E8 | 20 47 72 65 65 6E 20 69 | char[39]   |  Green i                           | string literal
  +0x09F0 | 73 20 62 69 74 5F 66 6C |            | s bit_fl
  +0x09F8 | 61 67 20 77 69 74 68 20 |            | ag with 
  +0x0A00 | 76 61 6C 75 65 20 28 31 |            | value (1
  +0x0A08 | 75 20 3C 3C 20 31 29    |            | u << 1)
  +0x0A0F | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.EnumVal.documentation):
  +0x0A10 | 13 00 00 00             | uint32_t   | 0x00000013 (19)                    | length of string
  +0x0A14 | 20 5C 62 72 69 65 66 20 | char[19]   |  \brief                            | string literal
  +0x0A1C | 63 6F 6C 6F 72 20 47 72 |            | color Gr
  +0x0A24 | 65 65 6E                |            | een
  +0x0A27 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x0A28 | 2C FF FF FF             | SOffset32  | 0xFFFFFF2C (-212) Loc: 0x0AFC      | offset to vtable
  +0x0A2C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x0A30 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x0A34 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x0A38 | 47 72 65 65 6E          | char[5]    | Green                              | string literal
  +0x0A3D | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.EnumVal):
  +0x0A40 | 0C 00                   | uint16_t   | 0x000C (12)                        | size of this vtable
  +0x0A42 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of referring table
  +0x0A44 | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `name` (id: 0)
  +0x0A46 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `value` (id: 1)
  +0x0A48 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `object` (id: 2) <null> (Obj)
  +0x0A4A | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `union_type` (id: 3)

table (reflection.EnumVal):
  +0x0A4C | 0C 00 00 00             | SOffset32  | 0x0000000C (12) Loc: 0x0A40        | offset to vtable
  +0x0A50 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x0A70        | offset to field `name` (string)
  +0x0A54 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x0A64        | offset to field `union_type` (table)
  +0x0A58 | 01 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000001 (1)             | table field `value` (Long)
  +0x0A60 | 00 00 00 00             | uint8_t[4] | ....                               | padding

table (reflection.Type):
  +0x0A64 | 68 FF FF FF             | SOffset32  | 0xFFFFFF68 (-152) Loc: 0x0AFC      | offset to vtable
  +0x0A68 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x0A6C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x0A70 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x0A74 | 52 65 64                | char[3]    | Red                                | string literal
  +0x0A77 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Enum):
  +0x0A7A | 12 00                   | uint16_t   | 0x0012 (18)                        | size of this vtable
  +0x0A7C | 14 00                   | uint16_t   | 0x0014 (20)                        | size of referring table
  +0x0A7E | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `name` (id: 0)
  +0x0A80 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `values` (id: 1)
  +0x0A82 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `is_union` (id: 2) <defaults to 0> (Bool)
  +0x0A84 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `underlying_type` (id: 3)
  +0x0A86 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `attributes` (id: 4) <null> (Vector)
  +0x0A88 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `documentation` (id: 5) <null> (Vector)
  +0x0A8A | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `declaration_file` (id: 6)

table (reflection.Enum):
  +0x0A8C | 12 00 00 00             | SOffset32  | 0x00000012 (18) Loc: 0x0A7A        | offset to vtable
  +0x0A90 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x0ABC        | offset to field `name` (string)
  +0x0A94 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x0AB4        | offset to field `values` (vector)
  +0x0A98 | 08 00 00 00             | UOffset32  | 0x00000008 (8) Loc: 0x0AA0         | offset to field `underlying_type` (table)
  +0x0A9C | 8C 2D 00 00             | UOffset32  | 0x00002D8C (11660) Loc: 0x3828     | offset to field `declaration_file` (string)

table (reflection.Type):
  +0x0AA0 | 3C D5 FF FF             | SOffset32  | 0xFFFFD53C (-10948) Loc: 0x3564    | offset to vtable
  +0x0AA4 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0AA7 | 09                      | uint8_t    | 0x09 (9)                           | table field `base_type` (Byte)
  +0x0AA8 | 06 00 00 00             | uint32_t   | 0x00000006 (6)                     | table field `index` (Int)
  +0x0AAC | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x0AB0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

vector (reflection.Enum.values):
  +0x0AB4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x0AB8 | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x0AF0        | offset to table[0]

string (reflection.Enum.name):
  +0x0ABC | 21 00 00 00             | uint32_t   | 0x00000021 (33)                    | length of string
  +0x0AC0 | 4D 79 47 61 6D 65 2E 4F | char[33]   | MyGame.O                           | string literal
  +0x0AC8 | 74 68 65 72 4E 61 6D 65 |            | therName
  +0x0AD0 | 53 70 61 63 65 2E 46 72 |            | Space.Fr
  +0x0AD8 | 6F 6D 49 6E 63 6C 75 64 |            | omInclud
  +0x0AE0 | 65                      |            | e
  +0x0AE1 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.EnumVal):
  +0x0AE4 | 0C 00                   | uint16_t   | 0x000C (12)                        | size of this vtable
  +0x0AE6 | 0C 00                   | uint16_t   | 0x000C (12)                        | size of referring table
  +0x0AE8 | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `name` (id: 0)
  +0x0AEA | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `value` (id: 1) <defaults to 0> (Long)
  +0x0AEC | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `object` (id: 2) <null> (Obj)
  +0x0AEE | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `union_type` (id: 3)

table (reflection.EnumVal):
  +0x0AF0 | 0C 00 00 00             | SOffset32  | 0x0000000C (12) Loc: 0x0AE4        | offset to vtable
  +0x0AF4 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x0B18        | offset to field `name` (string)
  +0x0AF8 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x0B0C        | offset to field `union_type` (table)

vtable (reflection.Type):
  +0x0AFC | 10 00                   | uint16_t   | 0x0010 (16)                        | size of this vtable
  +0x0AFE | 0C 00                   | uint16_t   | 0x000C (12)                        | size of referring table
  +0x0B00 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `base_type` (id: 0) <defaults to 0> (Byte)
  +0x0B02 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `element` (id: 1) <defaults to 0> (Byte)
  +0x0B04 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `index` (id: 2) <defaults to -1> (Int)
  +0x0B06 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `fixed_length` (id: 3) <defaults to 0> (UShort)
  +0x0B08 | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `base_size` (id: 4)
  +0x0B0A | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `element_size` (id: 5)

table (reflection.Type):
  +0x0B0C | 10 00 00 00             | SOffset32  | 0x00000010 (16) Loc: 0x0AFC        | offset to vtable
  +0x0B10 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x0B14 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.EnumVal.name):
  +0x0B18 | 0A 00 00 00             | uint32_t   | 0x0000000A (10)                    | length of string
  +0x0B1C | 49 6E 63 6C 75 64 65 56 | char[10]   | IncludeV                           | string literal
  +0x0B24 | 61 6C                   |            | al
  +0x0B26 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Object):
  +0x0B28 | D8 D3 FF FF             | SOffset32  | 0xFFFFD3D8 (-11304) Loc: 0x3750    | offset to vtable
  +0x0B2C | 44 00 00 00             | UOffset32  | 0x00000044 (68) Loc: 0x0B70        | offset to field `name` (string)
  +0x0B30 | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x0B3C        | offset to field `fields` (vector)
  +0x0B34 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `minalign` (Int)
  +0x0B38 | 64 2B 00 00             | UOffset32  | 0x00002B64 (11108) Loc: 0x369C     | offset to field `declaration_file` (string)

vector (reflection.Object.fields):
  +0x0B3C | 0C 00 00 00             | uint32_t   | 0x0000000C (12)                    | length of vector (# items)
  +0x0B40 | E8 00 00 00             | UOffset32  | 0x000000E8 (232) Loc: 0x0C28       | offset to table[0]
  +0x0B44 | BC 00 00 00             | UOffset32  | 0x000000BC (188) Loc: 0x0C00       | offset to table[1]
  +0x0B48 | C4 01 00 00             | UOffset32  | 0x000001C4 (452) Loc: 0x0D0C       | offset to table[2]
  +0x0B4C | 74 01 00 00             | UOffset32  | 0x00000174 (372) Loc: 0x0CC0       | offset to table[3]
  +0x0B50 | 24 01 00 00             | UOffset32  | 0x00000124 (292) Loc: 0x0C74       | offset to table[4]
  +0x0B54 | 14 02 00 00             | UOffset32  | 0x00000214 (532) Loc: 0x0D68       | offset to table[5]
  +0x0B58 | 8C 01 00 00             | UOffset32  | 0x0000018C (396) Loc: 0x0CE4       | offset to table[6]
  +0x0B5C | 40 01 00 00             | UOffset32  | 0x00000140 (320) Loc: 0x0C9C       | offset to table[7]
  +0x0B60 | EC 00 00 00             | UOffset32  | 0x000000EC (236) Loc: 0x0C4C       | offset to table[8]
  +0x0B64 | D0 01 00 00             | UOffset32  | 0x000001D0 (464) Loc: 0x0D34       | offset to table[9]
  +0x0B68 | 70 00 00 00             | UOffset32  | 0x00000070 (112) Loc: 0x0BD8       | offset to table[10]
  +0x0B6C | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x0B90        | offset to table[11]

string (reflection.Object.name):
  +0x0B70 | 1A 00 00 00             | uint32_t   | 0x0000001A (26)                    | length of string
  +0x0B74 | 4D 79 47 61 6D 65 2E 45 | char[26]   | MyGame.E                           | string literal
  +0x0B7C | 78 61 6D 70 6C 65 2E 54 |            | xample.T
  +0x0B84 | 79 70 65 41 6C 69 61 73 |            | ypeAlias
  +0x0B8C | 65 73                   |            | es
  +0x0B8E | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x0B90 | D4 FF FF FF             | SOffset32  | 0xFFFFFFD4 (-44) Loc: 0x0BBC       | offset to vtable
  +0x0B94 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0B97 | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x0B98 | 0B 00                   | uint16_t   | 0x000B (11)                        | table field `id` (UShort)
  +0x0B9A | 1A 00                   | uint16_t   | 0x001A (26)                        | table field `offset` (UShort)
  +0x0B9C | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x0BB0        | offset to field `name` (string)
  +0x0BA0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0BA4         | offset to field `type` (table)

table (reflection.Type):
  +0x0BA4 | 44 DF FF FF             | SOffset32  | 0xFFFFDF44 (-8380) Loc: 0x2C60     | offset to vtable
  +0x0BA8 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x0BAA | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x0BAB | 0C                      | uint8_t    | 0x0C (12)                          | table field `element` (Byte)
  +0x0BAC | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x0BB0 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x0BB4 | 76 66 36 34             | char[4]    | vf64                               | string literal
  +0x0BB8 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Field):
  +0x0BBC | 1C 00                   | uint16_t   | 0x001C (28)                        | size of this vtable
  +0x0BBE | 14 00                   | uint16_t   | 0x0014 (20)                        | size of referring table
  +0x0BC0 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `name` (id: 0)
  +0x0BC2 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `type` (id: 1)
  +0x0BC4 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `id` (id: 2)
  +0x0BC6 | 0A 00                   | VOffset16  | 0x000A (10)                        | offset to field `offset` (id: 3)
  +0x0BC8 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_integer` (id: 4) <defaults to 0> (Long)
  +0x0BCA | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_real` (id: 5) <defaults to 0.000000> (Double)
  +0x0BCC | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x0BCE | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x0BD0 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `key` (id: 8) <defaults to 0> (Bool)
  +0x0BD2 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `attributes` (id: 9) <null> (Vector)
  +0x0BD4 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `documentation` (id: 10) <null> (Vector)
  +0x0BD6 | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `optional` (id: 11)

table (reflection.Field):
  +0x0BD8 | 1C 00 00 00             | SOffset32  | 0x0000001C (28) Loc: 0x0BBC        | offset to vtable
  +0x0BDC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0BDF | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x0BE0 | 0A 00                   | uint16_t   | 0x000A (10)                        | table field `id` (UShort)
  +0x0BE2 | 18 00                   | uint16_t   | 0x0018 (24)                        | table field `offset` (UShort)
  +0x0BE4 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x0BF8        | offset to field `name` (string)
  +0x0BE8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0BEC         | offset to field `type` (table)

table (reflection.Type):
  +0x0BEC | 8C DF FF FF             | SOffset32  | 0xFFFFDF8C (-8308) Loc: 0x2C60     | offset to vtable
  +0x0BF0 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x0BF2 | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x0BF3 | 03                      | uint8_t    | 0x03 (3)                           | table field `element` (Byte)
  +0x0BF4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x0BF8 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x0BFC | 76 38                   | char[2]    | v8                                 | string literal
  +0x0BFE | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x0C00 | CC D7 FF FF             | SOffset32  | 0xFFFFD7CC (-10292) Loc: 0x3434    | offset to vtable
  +0x0C04 | 09 00                   | uint16_t   | 0x0009 (9)                         | table field `id` (UShort)
  +0x0C06 | 16 00                   | uint16_t   | 0x0016 (22)                        | table field `offset` (UShort)
  +0x0C08 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x0C20        | offset to field `name` (string)
  +0x0C0C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0C10         | offset to field `type` (table)

table (reflection.Type):
  +0x0C10 | E4 D5 FF FF             | SOffset32  | 0xFFFFD5E4 (-10780) Loc: 0x362C    | offset to vtable
  +0x0C14 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0C17 | 0C                      | uint8_t    | 0x0C (12)                          | table field `base_type` (Byte)
  +0x0C18 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x0C1C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x0C20 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x0C24 | 66 36 34                | char[3]    | f64                                | string literal
  +0x0C27 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x0C28 | F4 D7 FF FF             | SOffset32  | 0xFFFFD7F4 (-10252) Loc: 0x3434    | offset to vtable
  +0x0C2C | 08 00                   | uint16_t   | 0x0008 (8)                         | table field `id` (UShort)
  +0x0C2E | 14 00                   | uint16_t   | 0x0014 (20)                        | table field `offset` (UShort)
  +0x0C30 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x0C44        | offset to field `name` (string)
  +0x0C34 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0C38         | offset to field `type` (table)

table (reflection.Type):
  +0x0C38 | A4 D3 FF FF             | SOffset32  | 0xFFFFD3A4 (-11356) Loc: 0x3894    | offset to vtable
  +0x0C3C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0C3F | 0B                      | uint8_t    | 0x0B (11)                          | table field `base_type` (Byte)
  +0x0C40 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x0C44 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x0C48 | 66 33 32                | char[3]    | f32                                | string literal
  +0x0C4B | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x0C4C | 18 D8 FF FF             | SOffset32  | 0xFFFFD818 (-10216) Loc: 0x3434    | offset to vtable
  +0x0C50 | 07 00                   | uint16_t   | 0x0007 (7)                         | table field `id` (UShort)
  +0x0C52 | 12 00                   | uint16_t   | 0x0012 (18)                        | table field `offset` (UShort)
  +0x0C54 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x0C6C        | offset to field `name` (string)
  +0x0C58 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0C5C         | offset to field `type` (table)

table (reflection.Type):
  +0x0C5C | 30 D6 FF FF             | SOffset32  | 0xFFFFD630 (-10704) Loc: 0x362C    | offset to vtable
  +0x0C60 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0C63 | 0A                      | uint8_t    | 0x0A (10)                          | table field `base_type` (Byte)
  +0x0C64 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x0C68 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x0C6C | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x0C70 | 75 36 34                | char[3]    | u64                                | string literal
  +0x0C73 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x0C74 | 40 D8 FF FF             | SOffset32  | 0xFFFFD840 (-10176) Loc: 0x3434    | offset to vtable
  +0x0C78 | 06 00                   | uint16_t   | 0x0006 (6)                         | table field `id` (UShort)
  +0x0C7A | 10 00                   | uint16_t   | 0x0010 (16)                        | table field `offset` (UShort)
  +0x0C7C | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x0C94        | offset to field `name` (string)
  +0x0C80 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0C84         | offset to field `type` (table)

table (reflection.Type):
  +0x0C84 | 58 D6 FF FF             | SOffset32  | 0xFFFFD658 (-10664) Loc: 0x362C    | offset to vtable
  +0x0C88 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0C8B | 09                      | uint8_t    | 0x09 (9)                           | table field `base_type` (Byte)
  +0x0C8C | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x0C90 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x0C94 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x0C98 | 69 36 34                | char[3]    | i64                                | string literal
  +0x0C9B | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x0C9C | 68 D8 FF FF             | SOffset32  | 0xFFFFD868 (-10136) Loc: 0x3434    | offset to vtable
  +0x0CA0 | 05 00                   | uint16_t   | 0x0005 (5)                         | table field `id` (UShort)
  +0x0CA2 | 0E 00                   | uint16_t   | 0x000E (14)                        | table field `offset` (UShort)
  +0x0CA4 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x0CB8        | offset to field `name` (string)
  +0x0CA8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0CAC         | offset to field `type` (table)

table (reflection.Type):
  +0x0CAC | 18 D4 FF FF             | SOffset32  | 0xFFFFD418 (-11240) Loc: 0x3894    | offset to vtable
  +0x0CB0 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0CB3 | 08                      | uint8_t    | 0x08 (8)                           | table field `base_type` (Byte)
  +0x0CB4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x0CB8 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x0CBC | 75 33 32                | char[3]    | u32                                | string literal
  +0x0CBF | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x0CC0 | 8C D8 FF FF             | SOffset32  | 0xFFFFD88C (-10100) Loc: 0x3434    | offset to vtable
  +0x0CC4 | 04 00                   | uint16_t   | 0x0004 (4)                         | table field `id` (UShort)
  +0x0CC6 | 0C 00                   | uint16_t   | 0x000C (12)                        | table field `offset` (UShort)
  +0x0CC8 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x0CDC        | offset to field `name` (string)
  +0x0CCC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0CD0         | offset to field `type` (table)

table (reflection.Type):
  +0x0CD0 | 3C D4 FF FF             | SOffset32  | 0xFFFFD43C (-11204) Loc: 0x3894    | offset to vtable
  +0x0CD4 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0CD7 | 07                      | uint8_t    | 0x07 (7)                           | table field `base_type` (Byte)
  +0x0CD8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x0CDC | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x0CE0 | 69 33 32                | char[3]    | i32                                | string literal
  +0x0CE3 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x0CE4 | B0 D8 FF FF             | SOffset32  | 0xFFFFD8B0 (-10064) Loc: 0x3434    | offset to vtable
  +0x0CE8 | 03 00                   | uint16_t   | 0x0003 (3)                         | table field `id` (UShort)
  +0x0CEA | 0A 00                   | uint16_t   | 0x000A (10)                        | table field `offset` (UShort)
  +0x0CEC | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x0D04        | offset to field `name` (string)
  +0x0CF0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0CF4         | offset to field `type` (table)

table (reflection.Type):
  +0x0CF4 | C8 D6 FF FF             | SOffset32  | 0xFFFFD6C8 (-10552) Loc: 0x362C    | offset to vtable
  +0x0CF8 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0CFB | 06                      | uint8_t    | 0x06 (6)                           | table field `base_type` (Byte)
  +0x0CFC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | table field `base_size` (UInt)
  +0x0D00 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x0D04 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x0D08 | 75 31 36                | char[3]    | u16                                | string literal
  +0x0D0B | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x0D0C | D8 D8 FF FF             | SOffset32  | 0xFFFFD8D8 (-10024) Loc: 0x3434    | offset to vtable
  +0x0D10 | 02 00                   | uint16_t   | 0x0002 (2)                         | table field `id` (UShort)
  +0x0D12 | 08 00                   | uint16_t   | 0x0008 (8)                         | table field `offset` (UShort)
  +0x0D14 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x0D2C        | offset to field `name` (string)
  +0x0D18 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0D1C         | offset to field `type` (table)

table (reflection.Type):
  +0x0D1C | F0 D6 FF FF             | SOffset32  | 0xFFFFD6F0 (-10512) Loc: 0x362C    | offset to vtable
  +0x0D20 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0D23 | 05                      | uint8_t    | 0x05 (5)                           | table field `base_type` (Byte)
  +0x0D24 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | table field `base_size` (UInt)
  +0x0D28 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x0D2C | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x0D30 | 69 31 36                | char[3]    | i16                                | string literal
  +0x0D33 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x0D34 | 00 D9 FF FF             | SOffset32  | 0xFFFFD900 (-9984) Loc: 0x3434     | offset to vtable
  +0x0D38 | 01 00                   | uint16_t   | 0x0001 (1)                         | table field `id` (UShort)
  +0x0D3A | 06 00                   | uint16_t   | 0x0006 (6)                         | table field `offset` (UShort)
  +0x0D3C | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x0D54        | offset to field `name` (string)
  +0x0D40 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0D44         | offset to field `type` (table)

table (reflection.Type):
  +0x0D44 | 18 D7 FF FF             | SOffset32  | 0xFFFFD718 (-10472) Loc: 0x362C    | offset to vtable
  +0x0D48 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0D4B | 04                      | uint8_t    | 0x04 (4)                           | table field `base_type` (Byte)
  +0x0D4C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x0D50 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x0D54 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x0D58 | 75 38                   | char[2]    | u8                                 | string literal
  +0x0D5A | 00                      | char       | 0x00 (0)                           | string terminator

vtable (reflection.Field):
  +0x0D5C | 0C 00                   | uint16_t   | 0x000C (12)                        | size of this vtable
  +0x0D5E | 10 00                   | uint16_t   | 0x0010 (16)                        | size of referring table
  +0x0D60 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x0D62 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `type` (id: 1)
  +0x0D64 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `id` (id: 2) <defaults to 0> (UShort)
  +0x0D66 | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `offset` (id: 3)

table (reflection.Field):
  +0x0D68 | 0C 00 00 00             | SOffset32  | 0x0000000C (12) Loc: 0x0D5C        | offset to vtable
  +0x0D6C | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x0D6E | 04 00                   | uint16_t   | 0x0004 (4)                         | table field `offset` (UShort)
  +0x0D70 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x0D88        | offset to field `name` (string)
  +0x0D74 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0D78         | offset to field `type` (table)

table (reflection.Type):
  +0x0D78 | 4C D7 FF FF             | SOffset32  | 0xFFFFD74C (-10420) Loc: 0x362C    | offset to vtable
  +0x0D7C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0D7F | 03                      | uint8_t    | 0x03 (3)                           | table field `base_type` (Byte)
  +0x0D80 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x0D84 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x0D88 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x0D8C | 69 38                   | char[2]    | i8                                 | string literal
  +0x0D8E | 00                      | char       | 0x00 (0)                           | string terminator

vtable (reflection.Object):
  +0x0D90 | 14 00                   | uint16_t   | 0x0014 (20)                        | size of this vtable
  +0x0D92 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of referring table
  +0x0D94 | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `name` (id: 0)
  +0x0D96 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `fields` (id: 1)
  +0x0D98 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `is_struct` (id: 2) <defaults to 0> (Bool)
  +0x0D9A | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `minalign` (id: 3)
  +0x0D9C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `bytesize` (id: 4) <defaults to 0> (Int)
  +0x0D9E | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `attributes` (id: 5) <null> (Vector)
  +0x0DA0 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `documentation` (id: 6)
  +0x0DA2 | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `declaration_file` (id: 7)

table (reflection.Object):
  +0x0DA4 | 14 00 00 00             | SOffset32  | 0x00000014 (20) Loc: 0x0D90        | offset to vtable
  +0x0DA8 | 50 01 00 00             | UOffset32  | 0x00000150 (336) Loc: 0x0EF8       | offset to field `name` (string)
  +0x0DAC | 50 00 00 00             | UOffset32  | 0x00000050 (80) Loc: 0x0DFC        | offset to field `fields` (vector)
  +0x0DB0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `minalign` (Int)
  +0x0DB4 | 08 00 00 00             | UOffset32  | 0x00000008 (8) Loc: 0x0DBC         | offset to field `documentation` (vector)
  +0x0DB8 | E4 28 00 00             | UOffset32  | 0x000028E4 (10468) Loc: 0x369C     | offset to field `declaration_file` (string)

vector (reflection.Object.documentation):
  +0x0DBC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x0DC0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0DC4         | offset to string[0]

string (reflection.Object.documentation):
  +0x0DC4 | 33 00 00 00             | uint32_t   | 0x00000033 (51)                    | length of string
  +0x0DC8 | 20 61 6E 20 65 78 61 6D | char[51]   |  an exam                           | string literal
  +0x0DD0 | 70 6C 65 20 64 6F 63 75 |            | ple docu
  +0x0DD8 | 6D 65 6E 74 61 74 69 6F |            | mentatio
  +0x0DE0 | 6E 20 63 6F 6D 6D 65 6E |            | n commen
  +0x0DE8 | 74 3A 20 22 6D 6F 6E 73 |            | t: "mons
  +0x0DF0 | 74 65 72 20 6F 62 6A 65 |            | ter obje
  +0x0DF8 | 63 74 22                |            | ct"
  +0x0DFB | 00                      | char       | 0x00 (0)                           | string terminator

vector (reflection.Object.fields):
  +0x0DFC | 3E 00 00 00             | uint32_t   | 0x0000003E (62)                    | length of vector (# items)
  +0x0E00 | A8 07 00 00             | UOffset32  | 0x000007A8 (1960) Loc: 0x15A8      | offset to table[0]
  +0x0E04 | 04 08 00 00             | UOffset32  | 0x00000804 (2052) Loc: 0x1608      | offset to table[1]
  +0x0E08 | 64 08 00 00             | UOffset32  | 0x00000864 (2148) Loc: 0x166C      | offset to table[2]
  +0x0E0C | BC 08 00 00             | UOffset32  | 0x000008BC (2236) Loc: 0x16C8      | offset to table[3]
  +0x0E10 | 98 0C 00 00             | UOffset32  | 0x00000C98 (3224) Loc: 0x1AA8      | offset to table[4]
  +0x0E14 | 90 1D 00 00             | UOffset32  | 0x00001D90 (7568) Loc: 0x2BA4      | offset to table[5]
  +0x0E18 | FC 00 00 00             | UOffset32  | 0x000000FC (252) Loc: 0x0F14       | offset to table[6]
  +0x0E1C | 90 1A 00 00             | UOffset32  | 0x00001A90 (6800) Loc: 0x28AC      | offset to table[7]
  +0x0E20 | E8 11 00 00             | UOffset32  | 0x000011E8 (4584) Loc: 0x2008      | offset to table[8]
  +0x0E24 | 80 1E 00 00             | UOffset32  | 0x00001E80 (7808) Loc: 0x2CA4      | offset to table[9]
  +0x0E28 | B4 1F 00 00             | UOffset32  | 0x00001FB4 (8116) Loc: 0x2DDC      | offset to table[10]
  +0x0E2C | 68 03 00 00             | UOffset32  | 0x00000368 (872) Loc: 0x1194       | offset to table[11]
  +0x0E30 | 94 02 00 00             | UOffset32  | 0x00000294 (660) Loc: 0x10C4       | offset to table[12]
  +0x0E34 | F0 1D 00 00             | UOffset32  | 0x00001DF0 (7664) Loc: 0x2C24      | offset to table[13]
  +0x0E38 | A8 04 00 00             | UOffset32  | 0x000004A8 (1192) Loc: 0x12E0      | offset to table[14]
  +0x0E3C | 30 04 00 00             | UOffset32  | 0x00000430 (1072) Loc: 0x126C      | offset to table[15]
  +0x0E40 | 0C 20 00 00             | UOffset32  | 0x0000200C (8204) Loc: 0x2E4C      | offset to table[16]
  +0x0E44 | 24 1F 00 00             | UOffset32  | 0x00001F24 (7972) Loc: 0x2D68      | offset to table[17]
  +0x0E48 | C4 03 00 00             | UOffset32  | 0x000003C4 (964) Loc: 0x120C       | offset to table[18]
  +0x0E4C | 00 05 00 00             | UOffset32  | 0x00000500 (1280) Loc: 0x134C      | offset to table[19]
  +0x0E50 | 9C 01 00 00             | UOffset32  | 0x0000019C (412) Loc: 0x0FEC       | offset to table[20]
  +0x0E54 | 28 01 00 00             | UOffset32  | 0x00000128 (296) Loc: 0x0F7C       | offset to table[21]
  +0x0E58 | F8 09 00 00             | UOffset32  | 0x000009F8 (2552) Loc: 0x1850      | offset to table[22]
  +0x0E5C | 30 10 00 00             | UOffset32  | 0x00001030 (4144) Loc: 0x1E8C      | offset to table[23]
  +0x0E60 | 64 20 00 00             | UOffset32  | 0x00002064 (8292) Loc: 0x2EC4      | offset to table[24]
  +0x0E64 | C8 02 00 00             | UOffset32  | 0x000002C8 (712) Loc: 0x112C       | offset to table[25]
  +0x0E68 | EC 01 00 00             | UOffset32  | 0x000001EC (492) Loc: 0x1054       | offset to table[26]
  +0x0E6C | 6C 05 00 00             | UOffset32  | 0x0000056C (1388) Loc: 0x13D8      | offset to table[27]
  +0x0E70 | 74 06 00 00             | UOffset32  | 0x00000674 (1652) Loc: 0x14E4      | offset to table[28]
  +0x0E74 | C0 0E 00 00             | UOffset32  | 0x00000EC0 (3776) Loc: 0x1D34      | offset to table[29]
  +0x0E78 | 48 1C 00 00             | UOffset32  | 0x00001C48 (7240) Loc: 0x2AC0      | offset to table[30]
  +0x0E7C | DC 1B 00 00             | UOffset32  | 0x00001BDC (7132) Loc: 0x2A58      | offset to table[31]
  +0x0E80 | 30 11 00 00             | UOffset32  | 0x00001130 (4400) Loc: 0x1FB0      | offset to table[32]
  +0x0E84 | AC 1C 00 00             | UOffset32  | 0x00001CAC (7340) Loc: 0x2B30      | offset to table[33]
  +0x0E88 | DC 13 00 00             | UOffset32  | 0x000013DC (5084) Loc: 0x2264      | offset to table[34]
  +0x0E8C | F8 11 00 00             | UOffset32  | 0x000011F8 (4600) Loc: 0x2084      | offset to table[35]
  +0x0E90 | 68 1B 00 00             | UOffset32  | 0x00001B68 (7016) Loc: 0x29F8      | offset to table[36]
  +0x0E94 | 58 12 00 00             | UOffset32  | 0x00001258 (4696) Loc: 0x20EC      | offset to table[37]
  +0x0E98 | 88 1A 00 00             | UOffset32  | 0x00001A88 (6792) Loc: 0x2920      | offset to table[38]
  +0x0E9C | C4 18 00 00             | UOffset32  | 0x000018C4 (6340) Loc: 0x2760      | offset to table[39]
  +0x0EA0 | 18 19 00 00             | UOffset32  | 0x00001918 (6424) Loc: 0x27B8      | offset to table[40]
  +0x0EA4 | 68 13 00 00             | UOffset32  | 0x00001368 (4968) Loc: 0x220C      | offset to table[41]
  +0x0EA8 | F4 12 00 00             | UOffset32  | 0x000012F4 (4852) Loc: 0x219C      | offset to table[42]
  +0x0EAC | A0 12 00 00             | UOffset32  | 0x000012A0 (4768) Loc: 0x214C      | offset to table[43]
  +0x0EB0 | 2C 18 00 00             | UOffset32  | 0x0000182C (6188) Loc: 0x26DC      | offset to table[44]
  +0x0EB4 | 0C 16 00 00             | UOffset32  | 0x0000160C (5644) Loc: 0x24C0      | offset to table[45]
  +0x0EB8 | 18 17 00 00             | UOffset32  | 0x00001718 (5912) Loc: 0x25D0      | offset to table[46]
  +0x0EBC | 94 14 00 00             | UOffset32  | 0x00001494 (5268) Loc: 0x2350      | offset to table[47]
  +0x0EC0 | 98 17 00 00             | UOffset32  | 0x00001798 (6040) Loc: 0x2658      | offset to table[48]
  +0x0EC4 | 18 15 00 00             | UOffset32  | 0x00001518 (5400) Loc: 0x23DC      | offset to table[49]
  +0x0EC8 | 80 16 00 00             | UOffset32  | 0x00001680 (5760) Loc: 0x2548      | offset to table[50]
  +0x0ECC | F8 13 00 00             | UOffset32  | 0x000013F8 (5112) Loc: 0x22C4      | offset to table[51]
  +0x0ED0 | 44 19 00 00             | UOffset32  | 0x00001944 (6468) Loc: 0x2814      | offset to table[52]
  +0x0ED4 | 70 05 00 00             | UOffset32  | 0x00000570 (1392) Loc: 0x1444      | offset to table[53]
  +0x0ED8 | 98 0A 00 00             | UOffset32  | 0x00000A98 (2712) Loc: 0x1970      | offset to table[54]
  +0x0EDC | 18 10 00 00             | UOffset32  | 0x00001018 (4120) Loc: 0x1EF4      | offset to table[55]
  +0x0EE0 | 68 06 00 00             | UOffset32  | 0x00000668 (1640) Loc: 0x1548      | offset to table[56]
  +0x0EE4 | 70 10 00 00             | UOffset32  | 0x00001070 (4208) Loc: 0x1F54      | offset to table[57]
  +0x0EE8 | 40 08 00 00             | UOffset32  | 0x00000840 (2112) Loc: 0x1728      | offset to table[58]
  +0x0EEC | 38 0F 00 00             | UOffset32  | 0x00000F38 (3896) Loc: 0x1E24      | offset to table[59]
  +0x0EF0 | A4 0C 00 00             | UOffset32  | 0x00000CA4 (3236) Loc: 0x1B94      | offset to table[60]
  +0x0EF4 | 4C 0D 00 00             | UOffset32  | 0x00000D4C (3404) Loc: 0x1C40      | offset to table[61]

string (reflection.Object.name):
  +0x0EF8 | 16 00 00 00             | uint32_t   | 0x00000016 (22)                    | length of string
  +0x0EFC | 4D 79 47 61 6D 65 2E 45 | char[22]   | MyGame.E                           | string literal
  +0x0F04 | 78 61 6D 70 6C 65 2E 4D |            | xample.M
  +0x0F0C | 6F 6E 73 74 65 72       |            | onster
  +0x0F12 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x0F14 | 20 ED FF FF             | SOffset32  | 0xFFFFED20 (-4832) Loc: 0x21F4     | offset to vtable
  +0x0F18 | 3D 00                   | uint16_t   | 0x003D (61)                        | table field `id` (UShort)
  +0x0F1A | 7E 00                   | uint16_t   | 0x007E (126)                       | table field `offset` (UShort)
  +0x0F1C | 48 00 00 00             | UOffset32  | 0x00000048 (72) Loc: 0x0F64        | offset to field `name` (string)
  +0x0F20 | 34 00 00 00             | UOffset32  | 0x00000034 (52) Loc: 0x0F54        | offset to field `type` (table)
  +0x0F24 | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x0F30        | offset to field `attributes` (vector)
  +0x0F28 | 00 00 00 00 00 00 F0 7F | double     | 0x7FF0000000000000 (inf)           | table field `default_real` (Double)

vector (reflection.Field.attributes):
  +0x0F30 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x0F34 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0F38         | offset to table[0]

table (reflection.KeyValue):
  +0x0F38 | B8 D6 FF FF             | SOffset32  | 0xFFFFD6B8 (-10568) Loc: 0x3880    | offset to vtable
  +0x0F3C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x0F4C        | offset to field `key` (string)
  +0x0F40 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0F44         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x0F44 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x0F48 | 36 31                   | char[2]    | 61                                 | string literal
  +0x0F4A | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x0F4C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x0F50 | 69 64                   | char[2]    | id                                 | string literal
  +0x0F52 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x0F54 | 28 D9 FF FF             | SOffset32  | 0xFFFFD928 (-9944) Loc: 0x362C     | offset to vtable
  +0x0F58 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0F5B | 0C                      | uint8_t    | 0x0C (12)                          | table field `base_type` (Byte)
  +0x0F5C | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x0F60 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x0F64 | 12 00 00 00             | uint32_t   | 0x00000012 (18)                    | length of string
  +0x0F68 | 64 6F 75 62 6C 65 5F 69 | char[18]   | double_i                           | string literal
  +0x0F70 | 6E 66 5F 64 65 66 61 75 |            | nf_defau
  +0x0F78 | 6C 74                   |            | lt
  +0x0F7A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x0F7C | 88 FD FF FF             | SOffset32  | 0xFFFFFD88 (-632) Loc: 0x11F4      | offset to vtable
  +0x0F80 | 3C 00                   | uint16_t   | 0x003C (60)                        | table field `id` (UShort)
  +0x0F82 | 7C 00                   | uint16_t   | 0x007C (124)                       | table field `offset` (UShort)
  +0x0F84 | 48 00 00 00             | UOffset32  | 0x00000048 (72) Loc: 0x0FCC        | offset to field `name` (string)
  +0x0F88 | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x0FC0        | offset to field `type` (table)
  +0x0F8C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x0F9C        | offset to field `attributes` (vector)
  +0x0F90 | 00 00 00 00 00 00 F0 FF | double     | 0xFFF0000000000000 (-inf)          | table field `default_real` (Double)
  +0x0F98 | 00 00 00 00             | uint8_t[4] | ....                               | padding

vector (reflection.Field.attributes):
  +0x0F9C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x0FA0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0FA4         | offset to table[0]

table (reflection.KeyValue):
  +0x0FA4 | 24 D7 FF FF             | SOffset32  | 0xFFFFD724 (-10460) Loc: 0x3880    | offset to vtable
  +0x0FA8 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x0FB8        | offset to field `key` (string)
  +0x0FAC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x0FB0         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x0FB0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x0FB4 | 36 30                   | char[2]    | 60                                 | string literal
  +0x0FB6 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x0FB8 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x0FBC | 69 64                   | char[2]    | id                                 | string literal
  +0x0FBE | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x0FC0 | 2C D7 FF FF             | SOffset32  | 0xFFFFD72C (-10452) Loc: 0x3894    | offset to vtable
  +0x0FC4 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x0FC7 | 0B                      | uint8_t    | 0x0B (11)                          | table field `base_type` (Byte)
  +0x0FC8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x0FCC | 19 00 00 00             | uint32_t   | 0x00000019 (25)                    | length of string
  +0x0FD0 | 6E 65 67 61 74 69 76 65 | char[25]   | negative                           | string literal
  +0x0FD8 | 5F 69 6E 66 69 6E 69 74 |            | _infinit
  +0x0FE0 | 79 5F 64 65 66 61 75 6C |            | y_defaul
  +0x0FE8 | 74                      |            | t
  +0x0FE9 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x0FEC | F8 ED FF FF             | SOffset32  | 0xFFFFEDF8 (-4616) Loc: 0x21F4     | offset to vtable
  +0x0FF0 | 3B 00                   | uint16_t   | 0x003B (59)                        | table field `id` (UShort)
  +0x0FF2 | 7A 00                   | uint16_t   | 0x007A (122)                       | table field `offset` (UShort)
  +0x0FF4 | 44 00 00 00             | UOffset32  | 0x00000044 (68) Loc: 0x1038        | offset to field `name` (string)
  +0x0FF8 | 34 00 00 00             | UOffset32  | 0x00000034 (52) Loc: 0x102C        | offset to field `type` (table)
  +0x0FFC | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x1008        | offset to field `attributes` (vector)
  +0x1000 | 00 00 00 00 00 00 F0 FF | double     | 0xFFF0000000000000 (-inf)          | table field `default_real` (Double)

vector (reflection.Field.attributes):
  +0x1008 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x100C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1010         | offset to table[0]

table (reflection.KeyValue):
  +0x1010 | 90 D7 FF FF             | SOffset32  | 0xFFFFD790 (-10352) Loc: 0x3880    | offset to vtable
  +0x1014 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1024        | offset to field `key` (string)
  +0x1018 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x101C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x101C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1020 | 35 39                   | char[2]    | 59                                 | string literal
  +0x1022 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1024 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1028 | 69 64                   | char[2]    | id                                 | string literal
  +0x102A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x102C | 98 D7 FF FF             | SOffset32  | 0xFFFFD798 (-10344) Loc: 0x3894    | offset to vtable
  +0x1030 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1033 | 0B                      | uint8_t    | 0x0B (11)                          | table field `base_type` (Byte)
  +0x1034 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1038 | 14 00 00 00             | uint32_t   | 0x00000014 (20)                    | length of string
  +0x103C | 6E 65 67 61 74 69 76 65 | char[20]   | negative                           | string literal
  +0x1044 | 5F 69 6E 66 5F 64 65 66 |            | _inf_def
  +0x104C | 61 75 6C 74             |            | ault
  +0x1050 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x1054 | 60 FE FF FF             | SOffset32  | 0xFFFFFE60 (-416) Loc: 0x11F4      | offset to vtable
  +0x1058 | 3A 00                   | uint16_t   | 0x003A (58)                        | table field `id` (UShort)
  +0x105A | 78 00                   | uint16_t   | 0x0078 (120)                       | table field `offset` (UShort)
  +0x105C | 48 00 00 00             | UOffset32  | 0x00000048 (72) Loc: 0x10A4        | offset to field `name` (string)
  +0x1060 | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x1098        | offset to field `type` (table)
  +0x1064 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1074        | offset to field `attributes` (vector)
  +0x1068 | 00 00 00 00 00 00 F0 7F | double     | 0x7FF0000000000000 (inf)           | table field `default_real` (Double)
  +0x1070 | 00 00 00 00             | uint8_t[4] | ....                               | padding

vector (reflection.Field.attributes):
  +0x1074 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x1078 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x107C         | offset to table[0]

table (reflection.KeyValue):
  +0x107C | FC D7 FF FF             | SOffset32  | 0xFFFFD7FC (-10244) Loc: 0x3880    | offset to vtable
  +0x1080 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1090        | offset to field `key` (string)
  +0x1084 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1088         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1088 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x108C | 35 38                   | char[2]    | 58                                 | string literal
  +0x108E | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1090 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1094 | 69 64                   | char[2]    | id                                 | string literal
  +0x1096 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x1098 | 04 D8 FF FF             | SOffset32  | 0xFFFFD804 (-10236) Loc: 0x3894    | offset to vtable
  +0x109C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x109F | 0B                      | uint8_t    | 0x0B (11)                          | table field `base_type` (Byte)
  +0x10A0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x10A4 | 19 00 00 00             | uint32_t   | 0x00000019 (25)                    | length of string
  +0x10A8 | 70 6F 73 69 74 69 76 65 | char[25]   | positive                           | string literal
  +0x10B0 | 5F 69 6E 66 69 6E 69 74 |            | _infinit
  +0x10B8 | 79 5F 64 65 66 61 75 6C |            | y_defaul
  +0x10C0 | 74                      |            | t
  +0x10C1 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x10C4 | D0 FE FF FF             | SOffset32  | 0xFFFFFED0 (-304) Loc: 0x11F4      | offset to vtable
  +0x10C8 | 39 00                   | uint16_t   | 0x0039 (57)                        | table field `id` (UShort)
  +0x10CA | 76 00                   | uint16_t   | 0x0076 (118)                       | table field `offset` (UShort)
  +0x10CC | 48 00 00 00             | UOffset32  | 0x00000048 (72) Loc: 0x1114        | offset to field `name` (string)
  +0x10D0 | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x1108        | offset to field `type` (table)
  +0x10D4 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x10E4        | offset to field `attributes` (vector)
  +0x10D8 | 00 00 00 00 00 00 F0 7F | double     | 0x7FF0000000000000 (inf)           | table field `default_real` (Double)
  +0x10E0 | 00 00 00 00             | uint8_t[4] | ....                               | padding

vector (reflection.Field.attributes):
  +0x10E4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x10E8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x10EC         | offset to table[0]

table (reflection.KeyValue):
  +0x10EC | 6C D8 FF FF             | SOffset32  | 0xFFFFD86C (-10132) Loc: 0x3880    | offset to vtable
  +0x10F0 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1100        | offset to field `key` (string)
  +0x10F4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x10F8         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x10F8 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x10FC | 35 37                   | char[2]    | 57                                 | string literal
  +0x10FE | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1100 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1104 | 69 64                   | char[2]    | id                                 | string literal
  +0x1106 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x1108 | 74 D8 FF FF             | SOffset32  | 0xFFFFD874 (-10124) Loc: 0x3894    | offset to vtable
  +0x110C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x110F | 0B                      | uint8_t    | 0x0B (11)                          | table field `base_type` (Byte)
  +0x1110 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1114 | 10 00 00 00             | uint32_t   | 0x00000010 (16)                    | length of string
  +0x1118 | 69 6E 66 69 6E 69 74 79 | char[16]   | infinity                           | string literal
  +0x1120 | 5F 64 65 66 61 75 6C 74 |            | _default
  +0x1128 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x112C | 38 EF FF FF             | SOffset32  | 0xFFFFEF38 (-4296) Loc: 0x21F4     | offset to vtable
  +0x1130 | 38 00                   | uint16_t   | 0x0038 (56)                        | table field `id` (UShort)
  +0x1132 | 74 00                   | uint16_t   | 0x0074 (116)                       | table field `offset` (UShort)
  +0x1134 | 44 00 00 00             | UOffset32  | 0x00000044 (68) Loc: 0x1178        | offset to field `name` (string)
  +0x1138 | 34 00 00 00             | UOffset32  | 0x00000034 (52) Loc: 0x116C        | offset to field `type` (table)
  +0x113C | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x1148        | offset to field `attributes` (vector)
  +0x1140 | 00 00 00 00 00 00 F0 7F | double     | 0x7FF0000000000000 (inf)           | table field `default_real` (Double)

vector (reflection.Field.attributes):
  +0x1148 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x114C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1150         | offset to table[0]

table (reflection.KeyValue):
  +0x1150 | D0 D8 FF FF             | SOffset32  | 0xFFFFD8D0 (-10032) Loc: 0x3880    | offset to vtable
  +0x1154 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1164        | offset to field `key` (string)
  +0x1158 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x115C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x115C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1160 | 35 36                   | char[2]    | 56                                 | string literal
  +0x1162 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1164 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1168 | 69 64                   | char[2]    | id                                 | string literal
  +0x116A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x116C | D8 D8 FF FF             | SOffset32  | 0xFFFFD8D8 (-10024) Loc: 0x3894    | offset to vtable
  +0x1170 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1173 | 0B                      | uint8_t    | 0x0B (11)                          | table field `base_type` (Byte)
  +0x1174 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1178 | 14 00 00 00             | uint32_t   | 0x00000014 (20)                    | length of string
  +0x117C | 70 6F 73 69 74 69 76 65 | char[20]   | positive                           | string literal
  +0x1184 | 5F 69 6E 66 5F 64 65 66 |            | _inf_def
  +0x118C | 61 75 6C 74             |            | ault
  +0x1190 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x1194 | A0 FF FF FF             | SOffset32  | 0xFFFFFFA0 (-96) Loc: 0x11F4       | offset to vtable
  +0x1198 | 37 00                   | uint16_t   | 0x0037 (55)                        | table field `id` (UShort)
  +0x119A | 72 00                   | uint16_t   | 0x0072 (114)                       | table field `offset` (UShort)
  +0x119C | 48 00 00 00             | UOffset32  | 0x00000048 (72) Loc: 0x11E4        | offset to field `name` (string)
  +0x11A0 | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x11D8        | offset to field `type` (table)
  +0x11A4 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x11B4        | offset to field `attributes` (vector)
  +0x11A8 | 00 00 00 00 00 00 F0 7F | double     | 0x7FF0000000000000 (inf)           | table field `default_real` (Double)
  +0x11B0 | 00 00 00 00             | uint8_t[4] | ....                               | padding

vector (reflection.Field.attributes):
  +0x11B4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x11B8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x11BC         | offset to table[0]

table (reflection.KeyValue):
  +0x11BC | 3C D9 FF FF             | SOffset32  | 0xFFFFD93C (-9924) Loc: 0x3880     | offset to vtable
  +0x11C0 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x11D0        | offset to field `key` (string)
  +0x11C4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x11C8         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x11C8 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x11CC | 35 35                   | char[2]    | 55                                 | string literal
  +0x11CE | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x11D0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x11D4 | 69 64                   | char[2]    | id                                 | string literal
  +0x11D6 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x11D8 | 44 D9 FF FF             | SOffset32  | 0xFFFFD944 (-9916) Loc: 0x3894     | offset to vtable
  +0x11DC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x11DF | 0B                      | uint8_t    | 0x0B (11)                          | table field `base_type` (Byte)
  +0x11E0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x11E4 | 0B 00 00 00             | uint32_t   | 0x0000000B (11)                    | length of string
  +0x11E8 | 69 6E 66 5F 64 65 66 61 | char[11]   | inf_defa                           | string literal
  +0x11F0 | 75 6C 74                |            | ult
  +0x11F3 | 00                      | char       | 0x00 (0)                           | string terminator

vtable (reflection.Field):
  +0x11F4 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of this vtable
  +0x11F6 | 20 00                   | uint16_t   | 0x0020 (32)                        | size of referring table
  +0x11F8 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x11FA | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `type` (id: 1)
  +0x11FC | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `id` (id: 2)
  +0x11FE | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `offset` (id: 3)
  +0x1200 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_integer` (id: 4) <defaults to 0> (Long)
  +0x1202 | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `default_real` (id: 5)
  +0x1204 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x1206 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x1208 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `key` (id: 8) <defaults to 0> (Bool)
  +0x120A | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `attributes` (id: 9)

table (reflection.Field):
  +0x120C | 18 00 00 00             | SOffset32  | 0x00000018 (24) Loc: 0x11F4        | offset to vtable
  +0x1210 | 36 00                   | uint16_t   | 0x0036 (54)                        | table field `id` (UShort)
  +0x1212 | 70 00                   | uint16_t   | 0x0070 (112)                       | table field `offset` (UShort)
  +0x1214 | 48 00 00 00             | UOffset32  | 0x00000048 (72) Loc: 0x125C        | offset to field `name` (string)
  +0x1218 | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x1250        | offset to field `type` (table)
  +0x121C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x122C        | offset to field `attributes` (vector)
  +0x1220 | 00 00 00 00 00 00 F8 7F | double     | 0x7FF8000000000000 (nan)           | table field `default_real` (Double)
  +0x1228 | 00 00 00 00             | uint8_t[4] | ....                               | padding

vector (reflection.Field.attributes):
  +0x122C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x1230 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1234         | offset to table[0]

table (reflection.KeyValue):
  +0x1234 | B4 D9 FF FF             | SOffset32  | 0xFFFFD9B4 (-9804) Loc: 0x3880     | offset to vtable
  +0x1238 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1248        | offset to field `key` (string)
  +0x123C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1240         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1240 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1244 | 35 34                   | char[2]    | 54                                 | string literal
  +0x1246 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1248 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x124C | 69 64                   | char[2]    | id                                 | string literal
  +0x124E | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x1250 | BC D9 FF FF             | SOffset32  | 0xFFFFD9BC (-9796) Loc: 0x3894     | offset to vtable
  +0x1254 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1257 | 0B                      | uint8_t    | 0x0B (11)                          | table field `base_type` (Byte)
  +0x1258 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x125C | 0B 00 00 00             | uint32_t   | 0x0000000B (11)                    | length of string
  +0x1260 | 6E 61 6E 5F 64 65 66 61 | char[11]   | nan_defa                           | string literal
  +0x1268 | 75 6C 74                |            | ult
  +0x126B | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x126C | 38 E4 FF FF             | SOffset32  | 0xFFFFE438 (-7112) Loc: 0x2E34     | offset to vtable
  +0x1270 | 35 00                   | uint16_t   | 0x0035 (53)                        | table field `id` (UShort)
  +0x1272 | 6E 00                   | uint16_t   | 0x006E (110)                       | table field `offset` (UShort)
  +0x1274 | 4C 00 00 00             | UOffset32  | 0x0000004C (76) Loc: 0x12C0        | offset to field `name` (string)
  +0x1278 | 34 00 00 00             | UOffset32  | 0x00000034 (52) Loc: 0x12AC        | offset to field `type` (table)
  +0x127C | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x1288        | offset to field `attributes` (vector)
  +0x1280 | 02 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000002 (2)             | table field `default_integer` (Long)

vector (reflection.Field.attributes):
  +0x1288 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x128C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1290         | offset to table[0]

table (reflection.KeyValue):
  +0x1290 | 10 DA FF FF             | SOffset32  | 0xFFFFDA10 (-9712) Loc: 0x3880     | offset to vtable
  +0x1294 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x12A4        | offset to field `key` (string)
  +0x1298 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x129C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x129C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x12A0 | 35 33                   | char[2]    | 53                                 | string literal
  +0x12A2 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x12A4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x12A8 | 69 64                   | char[2]    | id                                 | string literal
  +0x12AA | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x12AC | 48 DD FF FF             | SOffset32  | 0xFFFFDD48 (-8888) Loc: 0x3564     | offset to vtable
  +0x12B0 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x12B3 | 0A                      | uint8_t    | 0x0A (10)                          | table field `base_type` (Byte)
  +0x12B4 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `index` (Int)
  +0x12B8 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x12BC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x12C0 | 18 00 00 00             | uint32_t   | 0x00000018 (24)                    | length of string
  +0x12C4 | 6C 6F 6E 67 5F 65 6E 75 | char[24]   | long_enu                           | string literal
  +0x12CC | 6D 5F 6E 6F 72 6D 61 6C |            | m_normal
  +0x12D4 | 5F 64 65 66 61 75 6C 74 |            | _default
  +0x12DC | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x12E0 | C8 E7 FF FF             | SOffset32  | 0xFFFFE7C8 (-6200) Loc: 0x2B18     | offset to vtable
  +0x12E4 | 34 00                   | uint16_t   | 0x0034 (52)                        | table field `id` (UShort)
  +0x12E6 | 6C 00                   | uint16_t   | 0x006C (108)                       | table field `offset` (UShort)
  +0x12E8 | 44 00 00 00             | UOffset32  | 0x00000044 (68) Loc: 0x132C        | offset to field `name` (string)
  +0x12EC | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x1318        | offset to field `type` (table)
  +0x12F0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x12F4         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x12F4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x12F8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x12FC         | offset to table[0]

table (reflection.KeyValue):
  +0x12FC | 7C DA FF FF             | SOffset32  | 0xFFFFDA7C (-9604) Loc: 0x3880     | offset to vtable
  +0x1300 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1310        | offset to field `key` (string)
  +0x1304 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1308         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1308 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x130C | 35 32                   | char[2]    | 52                                 | string literal
  +0x130E | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1310 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1314 | 69 64                   | char[2]    | id                                 | string literal
  +0x1316 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x1318 | B4 DD FF FF             | SOffset32  | 0xFFFFDDB4 (-8780) Loc: 0x3564     | offset to vtable
  +0x131C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x131F | 0A                      | uint8_t    | 0x0A (10)                          | table field `base_type` (Byte)
  +0x1320 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `index` (Int)
  +0x1324 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x1328 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x132C | 1A 00 00 00             | uint32_t   | 0x0000001A (26)                    | length of string
  +0x1330 | 6C 6F 6E 67 5F 65 6E 75 | char[26]   | long_enu                           | string literal
  +0x1338 | 6D 5F 6E 6F 6E 5F 65 6E |            | m_non_en
  +0x1340 | 75 6D 5F 64 65 66 61 75 |            | um_defau
  +0x1348 | 6C 74                   |            | lt
  +0x134A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x134C | 44 E7 FF FF             | SOffset32  | 0xFFFFE744 (-6332) Loc: 0x2C08     | offset to vtable
  +0x1350 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1353 | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x1354 | 33 00                   | uint16_t   | 0x0033 (51)                        | table field `id` (UShort)
  +0x1356 | 6A 00                   | uint16_t   | 0x006A (106)                       | table field `offset` (UShort)
  +0x1358 | 6C 00 00 00             | UOffset32  | 0x0000006C (108) Loc: 0x13C4       | offset to field `name` (string)
  +0x135C | 58 00 00 00             | UOffset32  | 0x00000058 (88) Loc: 0x13B4        | offset to field `type` (table)
  +0x1360 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1364         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1364 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x1368 | 30 00 00 00             | UOffset32  | 0x00000030 (48) Loc: 0x1398        | offset to table[0]
  +0x136C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1370         | offset to table[1]

table (reflection.KeyValue):
  +0x1370 | F0 DA FF FF             | SOffset32  | 0xFFFFDAF0 (-9488) Loc: 0x3880     | offset to vtable
  +0x1374 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1384        | offset to field `key` (string)
  +0x1378 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x137C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x137C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x1380 | 30                      | char[1]    | 0                                  | string literal
  +0x1381 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x1384 | 0D 00 00 00             | uint32_t   | 0x0000000D (13)                    | length of string
  +0x1388 | 6E 61 74 69 76 65 5F 69 | char[13]   | native_i                           | string literal
  +0x1390 | 6E 6C 69 6E 65          |            | nline
  +0x1395 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x1398 | 18 DB FF FF             | SOffset32  | 0xFFFFDB18 (-9448) Loc: 0x3880     | offset to vtable
  +0x139C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x13AC        | offset to field `key` (string)
  +0x13A0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x13A4         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x13A4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x13A8 | 35 31                   | char[2]    | 51                                 | string literal
  +0x13AA | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x13AC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x13B0 | 69 64                   | char[2]    | id                                 | string literal
  +0x13B2 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x13B4 | E4 DB FF FF             | SOffset32  | 0xFFFFDBE4 (-9244) Loc: 0x37D0     | offset to vtable
  +0x13B8 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x13BB | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x13BC | 06 00 00 00             | uint32_t   | 0x00000006 (6)                     | table field `index` (Int)
  +0x13C0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x13C4 | 0D 00 00 00             | uint32_t   | 0x0000000D (13)                    | length of string
  +0x13C8 | 6E 61 74 69 76 65 5F 69 | char[13]   | native_i                           | string literal
  +0x13D0 | 6E 6C 69 6E 65          |            | nline
  +0x13D5 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x13D8 | D0 E7 FF FF             | SOffset32  | 0xFFFFE7D0 (-6192) Loc: 0x2C08     | offset to vtable
  +0x13DC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x13DF | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x13E0 | 32 00                   | uint16_t   | 0x0032 (50)                        | table field `id` (UShort)
  +0x13E2 | 68 00                   | uint16_t   | 0x0068 (104)                       | table field `offset` (UShort)
  +0x13E4 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x1424        | offset to field `name` (string)
  +0x13E8 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x1414        | offset to field `type` (table)
  +0x13EC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x13F0         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x13F0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x13F4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x13F8         | offset to table[0]

table (reflection.KeyValue):
  +0x13F8 | 78 DB FF FF             | SOffset32  | 0xFFFFDB78 (-9352) Loc: 0x3880     | offset to vtable
  +0x13FC | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x140C        | offset to field `key` (string)
  +0x1400 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1404         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1404 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1408 | 35 30                   | char[2]    | 50                                 | string literal
  +0x140A | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x140C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1410 | 69 64                   | char[2]    | id                                 | string literal
  +0x1412 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x1414 | 80 E9 FF FF             | SOffset32  | 0xFFFFE980 (-5760) Loc: 0x2A94     | offset to vtable
  +0x1418 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x141A | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x141B | 0F                      | uint8_t    | 0x0F (15)                          | table field `element` (Byte)
  +0x141C | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | table field `index` (Int)
  +0x1420 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1424 | 18 00 00 00             | uint32_t   | 0x00000018 (24)                    | length of string
  +0x1428 | 73 63 61 6C 61 72 5F 6B | char[24]   | scalar_k                           | string literal
  +0x1430 | 65 79 5F 73 6F 72 74 65 |            | ey_sorte
  +0x1438 | 64 5F 74 61 62 6C 65 73 |            | d_tables
  +0x1440 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x1444 | 3C E8 FF FF             | SOffset32  | 0xFFFFE83C (-6084) Loc: 0x2C08     | offset to vtable
  +0x1448 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x144B | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x144C | 31 00                   | uint16_t   | 0x0031 (49)                        | table field `id` (UShort)
  +0x144E | 66 00                   | uint16_t   | 0x0066 (102)                       | table field `offset` (UShort)
  +0x1450 | 70 00 00 00             | UOffset32  | 0x00000070 (112) Loc: 0x14C0       | offset to field `name` (string)
  +0x1454 | 60 00 00 00             | UOffset32  | 0x00000060 (96) Loc: 0x14B4        | offset to field `type` (table)
  +0x1458 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x145C         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x145C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x1460 | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x1498        | offset to table[0]
  +0x1464 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1468         | offset to table[1]

table (reflection.KeyValue):
  +0x1468 | E8 DB FF FF             | SOffset32  | 0xFFFFDBE8 (-9240) Loc: 0x3880     | offset to vtable
  +0x146C | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x1480        | offset to field `key` (string)
  +0x1470 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1474         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1474 | 07 00 00 00             | uint32_t   | 0x00000007 (7)                     | length of string
  +0x1478 | 4D 6F 6E 73 74 65 72    | char[7]    | Monster                            | string literal
  +0x147F | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1480 | 11 00 00 00             | uint32_t   | 0x00000011 (17)                    | length of string
  +0x1484 | 6E 65 73 74 65 64 5F 66 | char[17]   | nested_f                           | string literal
  +0x148C | 6C 61 74 62 75 66 66 65 |            | latbuffe
  +0x1494 | 72                      |            | r
  +0x1495 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x1498 | 18 DC FF FF             | SOffset32  | 0xFFFFDC18 (-9192) Loc: 0x3880     | offset to vtable
  +0x149C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x14AC        | offset to field `key` (string)
  +0x14A0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x14A4         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x14A4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x14A8 | 34 39                   | char[2]    | 49                                 | string literal
  +0x14AA | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x14AC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x14B0 | 69 64                   | char[2]    | id                                 | string literal
  +0x14B2 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x14B4 | 54 E8 FF FF             | SOffset32  | 0xFFFFE854 (-6060) Loc: 0x2C60     | offset to vtable
  +0x14B8 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x14BA | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x14BB | 04                      | uint8_t    | 0x04 (4)                           | table field `element` (Byte)
  +0x14BC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x14C0 | 1C 00 00 00             | uint32_t   | 0x0000001C (28)                    | length of string
  +0x14C4 | 74 65 73 74 72 65 71 75 | char[28]   | testrequ                           | string literal
  +0x14CC | 69 72 65 64 6E 65 73 74 |            | irednest
  +0x14D4 | 65 64 66 6C 61 74 62 75 |            | edflatbu
  +0x14DC | 66 66 65 72             |            | ffer
  +0x14E0 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x14E4 | B0 E6 FF FF             | SOffset32  | 0xFFFFE6B0 (-6480) Loc: 0x2E34     | offset to vtable
  +0x14E8 | 30 00                   | uint16_t   | 0x0030 (48)                        | table field `id` (UShort)
  +0x14EA | 64 00                   | uint16_t   | 0x0064 (100)                       | table field `offset` (UShort)
  +0x14EC | 4C 00 00 00             | UOffset32  | 0x0000004C (76) Loc: 0x1538        | offset to field `name` (string)
  +0x14F0 | 34 00 00 00             | UOffset32  | 0x00000034 (52) Loc: 0x1524        | offset to field `type` (table)
  +0x14F4 | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x1500        | offset to field `attributes` (vector)
  +0x14F8 | FF FF FF FF FF FF FF FF | int64_t    | 0xFFFFFFFFFFFFFFFF (-1)            | table field `default_integer` (Long)

vector (reflection.Field.attributes):
  +0x1500 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x1504 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1508         | offset to table[0]

table (reflection.KeyValue):
  +0x1508 | 88 DC FF FF             | SOffset32  | 0xFFFFDC88 (-9080) Loc: 0x3880     | offset to vtable
  +0x150C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x151C        | offset to field `key` (string)
  +0x1510 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1514         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1514 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1518 | 34 38                   | char[2]    | 48                                 | string literal
  +0x151A | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x151C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1520 | 69 64                   | char[2]    | id                                 | string literal
  +0x1522 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x1524 | C0 DF FF FF             | SOffset32  | 0xFFFFDFC0 (-8256) Loc: 0x3564     | offset to vtable
  +0x1528 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x152B | 03                      | uint8_t    | 0x03 (3)                           | table field `base_type` (Byte)
  +0x152C | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | table field `index` (Int)
  +0x1530 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x1534 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1538 | 0B 00 00 00             | uint32_t   | 0x0000000B (11)                    | length of string
  +0x153C | 73 69 67 6E 65 64 5F 65 | char[11]   | signed_e                           | string literal
  +0x1544 | 6E 75 6D                |            | num
  +0x1547 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x1548 | 40 E9 FF FF             | SOffset32  | 0xFFFFE940 (-5824) Loc: 0x2C08     | offset to vtable
  +0x154C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x154F | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x1550 | 2F 00                   | uint16_t   | 0x002F (47)                        | table field `id` (UShort)
  +0x1552 | 62 00                   | uint16_t   | 0x0062 (98)                        | table field `offset` (UShort)
  +0x1554 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x1594        | offset to field `name` (string)
  +0x1558 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x1584        | offset to field `type` (table)
  +0x155C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1560         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1560 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x1564 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1568         | offset to table[0]

table (reflection.KeyValue):
  +0x1568 | E8 DC FF FF             | SOffset32  | 0xFFFFDCE8 (-8984) Loc: 0x3880     | offset to vtable
  +0x156C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x157C        | offset to field `key` (string)
  +0x1570 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1574         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1574 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1578 | 34 37                   | char[2]    | 47                                 | string literal
  +0x157A | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x157C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1580 | 69 64                   | char[2]    | id                                 | string literal
  +0x1582 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x1584 | F0 EA FF FF             | SOffset32  | 0xFFFFEAF0 (-5392) Loc: 0x2A94     | offset to vtable
  +0x1588 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x158A | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x158B | 04                      | uint8_t    | 0x04 (4)                           | table field `element` (Byte)
  +0x158C | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | table field `index` (Int)
  +0x1590 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1594 | 0F 00 00 00             | uint32_t   | 0x0000000F (15)                    | length of string
  +0x1598 | 76 65 63 74 6F 72 5F 6F | char[15]   | vector_o                           | string literal
  +0x15A0 | 66 5F 65 6E 75 6D 73    |            | f_enums
  +0x15A7 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x15A8 | A0 E9 FF FF             | SOffset32  | 0xFFFFE9A0 (-5728) Loc: 0x2C08     | offset to vtable
  +0x15AC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x15AF | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x15B0 | 2E 00                   | uint16_t   | 0x002E (46)                        | table field `id` (UShort)
  +0x15B2 | 60 00                   | uint16_t   | 0x0060 (96)                        | table field `offset` (UShort)
  +0x15B4 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x15F4        | offset to field `name` (string)
  +0x15B8 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x15E4        | offset to field `type` (table)
  +0x15BC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x15C0         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x15C0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x15C4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x15C8         | offset to table[0]

table (reflection.KeyValue):
  +0x15C8 | 48 DD FF FF             | SOffset32  | 0xFFFFDD48 (-8888) Loc: 0x3880     | offset to vtable
  +0x15CC | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x15DC        | offset to field `key` (string)
  +0x15D0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x15D4         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x15D4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x15D8 | 34 36                   | char[2]    | 46                                 | string literal
  +0x15DA | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x15DC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x15E0 | 69 64                   | char[2]    | id                                 | string literal
  +0x15E2 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x15E4 | 14 DE FF FF             | SOffset32  | 0xFFFFDE14 (-8684) Loc: 0x37D0     | offset to vtable
  +0x15E8 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x15EB | 10                      | uint8_t    | 0x10 (16)                          | table field `base_type` (Byte)
  +0x15EC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `index` (Int)
  +0x15F0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x15F4 | 0D 00 00 00             | uint32_t   | 0x0000000D (13)                    | length of string
  +0x15F8 | 61 6E 79 5F 61 6D 62 69 | char[13]   | any_ambi                           | string literal
  +0x1600 | 67 75 6F 75 73          |            | guous
  +0x1605 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x1608 | F0 EA FF FF             | SOffset32  | 0xFFFFEAF0 (-5392) Loc: 0x2B18     | offset to vtable
  +0x160C | 2D 00                   | uint16_t   | 0x002D (45)                        | table field `id` (UShort)
  +0x160E | 5E 00                   | uint16_t   | 0x005E (94)                        | table field `offset` (UShort)
  +0x1610 | 44 00 00 00             | UOffset32  | 0x00000044 (68) Loc: 0x1654        | offset to field `name` (string)
  +0x1614 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x1640        | offset to field `type` (table)
  +0x1618 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x161C         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x161C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x1620 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1624         | offset to table[0]

table (reflection.KeyValue):
  +0x1624 | A4 DD FF FF             | SOffset32  | 0xFFFFDDA4 (-8796) Loc: 0x3880     | offset to vtable
  +0x1628 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1638        | offset to field `key` (string)
  +0x162C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1630         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1630 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1634 | 34 35                   | char[2]    | 45                                 | string literal
  +0x1636 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1638 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x163C | 69 64                   | char[2]    | id                                 | string literal
  +0x163E | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x1640 | DC E0 FF FF             | SOffset32  | 0xFFFFE0DC (-7972) Loc: 0x3564     | offset to vtable
  +0x1644 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1647 | 01                      | uint8_t    | 0x01 (1)                           | table field `base_type` (Byte)
  +0x1648 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `index` (Int)
  +0x164C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x1650 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1654 | 12 00 00 00             | uint32_t   | 0x00000012 (18)                    | length of string
  +0x1658 | 61 6E 79 5F 61 6D 62 69 | char[18]   | any_ambi                           | string literal
  +0x1660 | 67 75 6F 75 73 5F 74 79 |            | guous_ty
  +0x1668 | 70 65                   |            | pe
  +0x166A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x166C | 64 EA FF FF             | SOffset32  | 0xFFFFEA64 (-5532) Loc: 0x2C08     | offset to vtable
  +0x1670 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1673 | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x1674 | 2C 00                   | uint16_t   | 0x002C (44)                        | table field `id` (UShort)
  +0x1676 | 5C 00                   | uint16_t   | 0x005C (92)                        | table field `offset` (UShort)
  +0x1678 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x16B8        | offset to field `name` (string)
  +0x167C | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x16A8        | offset to field `type` (table)
  +0x1680 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1684         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1684 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x1688 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x168C         | offset to table[0]

table (reflection.KeyValue):
  +0x168C | 0C DE FF FF             | SOffset32  | 0xFFFFDE0C (-8692) Loc: 0x3880     | offset to vtable
  +0x1690 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x16A0        | offset to field `key` (string)
  +0x1694 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1698         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1698 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x169C | 34 34                   | char[2]    | 44                                 | string literal
  +0x169E | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x16A0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x16A4 | 69 64                   | char[2]    | id                                 | string literal
  +0x16A6 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x16A8 | D8 DE FF FF             | SOffset32  | 0xFFFFDED8 (-8488) Loc: 0x37D0     | offset to vtable
  +0x16AC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x16AF | 10                      | uint8_t    | 0x10 (16)                          | table field `base_type` (Byte)
  +0x16B0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | table field `index` (Int)
  +0x16B4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x16B8 | 0A 00 00 00             | uint32_t   | 0x0000000A (10)                    | length of string
  +0x16BC | 61 6E 79 5F 75 6E 69 71 | char[10]   | any_uniq                           | string literal
  +0x16C4 | 75 65                   |            | ue
  +0x16C6 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x16C8 | B0 EB FF FF             | SOffset32  | 0xFFFFEBB0 (-5200) Loc: 0x2B18     | offset to vtable
  +0x16CC | 2B 00                   | uint16_t   | 0x002B (43)                        | table field `id` (UShort)
  +0x16CE | 5A 00                   | uint16_t   | 0x005A (90)                        | table field `offset` (UShort)
  +0x16D0 | 44 00 00 00             | UOffset32  | 0x00000044 (68) Loc: 0x1714        | offset to field `name` (string)
  +0x16D4 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x1700        | offset to field `type` (table)
  +0x16D8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x16DC         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x16DC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x16E0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x16E4         | offset to table[0]

table (reflection.KeyValue):
  +0x16E4 | 64 DE FF FF             | SOffset32  | 0xFFFFDE64 (-8604) Loc: 0x3880     | offset to vtable
  +0x16E8 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x16F8        | offset to field `key` (string)
  +0x16EC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x16F0         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x16F0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x16F4 | 34 33                   | char[2]    | 43                                 | string literal
  +0x16F6 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x16F8 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x16FC | 69 64                   | char[2]    | id                                 | string literal
  +0x16FE | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x1700 | 9C E1 FF FF             | SOffset32  | 0xFFFFE19C (-7780) Loc: 0x3564     | offset to vtable
  +0x1704 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1707 | 01                      | uint8_t    | 0x01 (1)                           | table field `base_type` (Byte)
  +0x1708 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | table field `index` (Int)
  +0x170C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x1710 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1714 | 0F 00 00 00             | uint32_t   | 0x0000000F (15)                    | length of string
  +0x1718 | 61 6E 79 5F 75 6E 69 71 | char[15]   | any_uniq                           | string literal
  +0x1720 | 75 65 5F 74 79 70 65    |            | ue_type
  +0x1727 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x1728 | 20 EB FF FF             | SOffset32  | 0xFFFFEB20 (-5344) Loc: 0x2C08     | offset to vtable
  +0x172C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x172F | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x1730 | 2A 00                   | uint16_t   | 0x002A (42)                        | table field `id` (UShort)
  +0x1732 | 58 00                   | uint16_t   | 0x0058 (88)                        | table field `offset` (UShort)
  +0x1734 | F8 00 00 00             | UOffset32  | 0x000000F8 (248) Loc: 0x182C       | offset to field `name` (string)
  +0x1738 | E8 00 00 00             | UOffset32  | 0x000000E8 (232) Loc: 0x1820       | offset to field `type` (table)
  +0x173C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1740         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1740 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of vector (# items)
  +0x1744 | B0 00 00 00             | UOffset32  | 0x000000B0 (176) Loc: 0x17F4       | offset to table[0]
  +0x1748 | 80 00 00 00             | UOffset32  | 0x00000080 (128) Loc: 0x17C8       | offset to table[1]
  +0x174C | 50 00 00 00             | UOffset32  | 0x00000050 (80) Loc: 0x179C        | offset to table[2]
  +0x1750 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x1774        | offset to table[3]
  +0x1754 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1758         | offset to table[4]

table (reflection.KeyValue):
  +0x1758 | D8 DE FF FF             | SOffset32  | 0xFFFFDED8 (-8488) Loc: 0x3880     | offset to vtable
  +0x175C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x176C        | offset to field `key` (string)
  +0x1760 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1764         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1764 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1768 | 34 32                   | char[2]    | 42                                 | string literal
  +0x176A | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x176C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1770 | 69 64                   | char[2]    | id                                 | string literal
  +0x1772 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x1774 | F4 DE FF FF             | SOffset32  | 0xFFFFDEF4 (-8460) Loc: 0x3880     | offset to vtable
  +0x1778 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x1790        | offset to field `key` (string)
  +0x177C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1780         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1780 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x1784 | 66 6E 76 31 61 5F 36 34 | char[8]    | fnv1a_64                           | string literal
  +0x178C | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x1790 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x1794 | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x1798 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x179C | 1C DF FF FF             | SOffset32  | 0xFFFFDF1C (-8420) Loc: 0x3880     | offset to vtable
  +0x17A0 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x17B8        | offset to field `key` (string)
  +0x17A4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x17A8         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x17A8 | 0B 00 00 00             | uint32_t   | 0x0000000B (11)                    | length of string
  +0x17AC | 52 65 66 65 72 72 61 62 | char[11]   | Referrab                           | string literal
  +0x17B4 | 6C 65 54                |            | leT
  +0x17B7 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x17B8 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x17BC | 63 70 70 5F 74 79 70 65 | char[8]    | cpp_type                           | string literal
  +0x17C4 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x17C8 | 48 DF FF FF             | SOffset32  | 0xFFFFDF48 (-8376) Loc: 0x3880     | offset to vtable
  +0x17CC | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x17DC        | offset to field `key` (string)
  +0x17D0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x17D4         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x17D4 | 00 00 00 00             | uint32_t   | 0x00000000 (0)                     | length of string
  +0x17D8 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x17DC | 10 00 00 00             | uint32_t   | 0x00000010 (16)                    | length of string
  +0x17E0 | 63 70 70 5F 70 74 72 5F | char[16]   | cpp_ptr_                           | string literal
  +0x17E8 | 74 79 70 65 5F 67 65 74 |            | type_get
  +0x17F0 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x17F4 | 74 DF FF FF             | SOffset32  | 0xFFFFDF74 (-8332) Loc: 0x3880     | offset to vtable
  +0x17F8 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x180C        | offset to field `key` (string)
  +0x17FC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1800         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1800 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x1804 | 6E 61 6B 65 64          | char[5]    | naked                              | string literal
  +0x1809 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x180C | 0C 00 00 00             | uint32_t   | 0x0000000C (12)                    | length of string
  +0x1810 | 63 70 70 5F 70 74 72 5F | char[12]   | cpp_ptr_                           | string literal
  +0x1818 | 74 79 70 65             |            | type
  +0x181C | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x1820 | C0 EB FF FF             | SOffset32  | 0xFFFFEBC0 (-5184) Loc: 0x2C60     | offset to vtable
  +0x1824 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x1826 | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x1827 | 0A                      | uint8_t    | 0x0A (10)                          | table field `element` (Byte)
  +0x1828 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x182C | 1F 00 00 00             | uint32_t   | 0x0000001F (31)                    | length of string
  +0x1830 | 76 65 63 74 6F 72 5F 6F | char[31]   | vector_o                           | string literal
  +0x1838 | 66 5F 6E 6F 6E 5F 6F 77 |            | f_non_ow
  +0x1840 | 6E 69 6E 67 5F 72 65 66 |            | ning_ref
  +0x1848 | 65 72 65 6E 63 65 73    |            | erences
  +0x184F | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x1850 | 38 ED FF FF             | SOffset32  | 0xFFFFED38 (-4808) Loc: 0x2B18     | offset to vtable
  +0x1854 | 29 00                   | uint16_t   | 0x0029 (41)                        | table field `id` (UShort)
  +0x1856 | 56 00                   | uint16_t   | 0x0056 (86)                        | table field `offset` (UShort)
  +0x1858 | FC 00 00 00             | UOffset32  | 0x000000FC (252) Loc: 0x1954       | offset to field `name` (string)
  +0x185C | E8 00 00 00             | UOffset32  | 0x000000E8 (232) Loc: 0x1944       | offset to field `type` (table)
  +0x1860 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1864         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1864 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of vector (# items)
  +0x1868 | B0 00 00 00             | UOffset32  | 0x000000B0 (176) Loc: 0x1918       | offset to table[0]
  +0x186C | 80 00 00 00             | UOffset32  | 0x00000080 (128) Loc: 0x18EC       | offset to table[1]
  +0x1870 | 50 00 00 00             | UOffset32  | 0x00000050 (80) Loc: 0x18C0        | offset to table[2]
  +0x1874 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x1898        | offset to table[3]
  +0x1878 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x187C         | offset to table[4]

table (reflection.KeyValue):
  +0x187C | FC DF FF FF             | SOffset32  | 0xFFFFDFFC (-8196) Loc: 0x3880     | offset to vtable
  +0x1880 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1890        | offset to field `key` (string)
  +0x1884 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1888         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1888 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x188C | 34 31                   | char[2]    | 41                                 | string literal
  +0x188E | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1890 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1894 | 69 64                   | char[2]    | id                                 | string literal
  +0x1896 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x1898 | 18 E0 FF FF             | SOffset32  | 0xFFFFE018 (-8168) Loc: 0x3880     | offset to vtable
  +0x189C | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x18B4        | offset to field `key` (string)
  +0x18A0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x18A4         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x18A4 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x18A8 | 66 6E 76 31 61 5F 36 34 | char[8]    | fnv1a_64                           | string literal
  +0x18B0 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x18B4 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x18B8 | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x18BC | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x18C0 | 40 E0 FF FF             | SOffset32  | 0xFFFFE040 (-8128) Loc: 0x3880     | offset to vtable
  +0x18C4 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x18DC        | offset to field `key` (string)
  +0x18C8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x18CC         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x18CC | 0B 00 00 00             | uint32_t   | 0x0000000B (11)                    | length of string
  +0x18D0 | 52 65 66 65 72 72 61 62 | char[11]   | Referrab                           | string literal
  +0x18D8 | 6C 65 54                |            | leT
  +0x18DB | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x18DC | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x18E0 | 63 70 70 5F 74 79 70 65 | char[8]    | cpp_type                           | string literal
  +0x18E8 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x18EC | 6C E0 FF FF             | SOffset32  | 0xFFFFE06C (-8084) Loc: 0x3880     | offset to vtable
  +0x18F0 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1900        | offset to field `key` (string)
  +0x18F4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x18F8         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x18F8 | 00 00 00 00             | uint32_t   | 0x00000000 (0)                     | length of string
  +0x18FC | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x1900 | 10 00 00 00             | uint32_t   | 0x00000010 (16)                    | length of string
  +0x1904 | 63 70 70 5F 70 74 72 5F | char[16]   | cpp_ptr_                           | string literal
  +0x190C | 74 79 70 65 5F 67 65 74 |            | type_get
  +0x1914 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x1918 | 98 E0 FF FF             | SOffset32  | 0xFFFFE098 (-8040) Loc: 0x3880     | offset to vtable
  +0x191C | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x1930        | offset to field `key` (string)
  +0x1920 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1924         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1924 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x1928 | 6E 61 6B 65 64          | char[5]    | naked                              | string literal
  +0x192D | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x1930 | 0C 00 00 00             | uint32_t   | 0x0000000C (12)                    | length of string
  +0x1934 | 63 70 70 5F 70 74 72 5F | char[12]   | cpp_ptr_                           | string literal
  +0x193C | 74 79 70 65             |            | type
  +0x1940 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x1944 | 18 E3 FF FF             | SOffset32  | 0xFFFFE318 (-7400) Loc: 0x362C     | offset to vtable
  +0x1948 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x194B | 0A                      | uint8_t    | 0x0A (10)                          | table field `base_type` (Byte)
  +0x194C | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x1950 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1954 | 14 00 00 00             | uint32_t   | 0x00000014 (20)                    | length of string
  +0x1958 | 6E 6F 6E 5F 6F 77 6E 69 | char[20]   | non_owni                           | string literal
  +0x1960 | 6E 67 5F 72 65 66 65 72 |            | ng_refer
  +0x1968 | 65 6E 63 65             |            | ence
  +0x196C | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x1970 | 68 ED FF FF             | SOffset32  | 0xFFFFED68 (-4760) Loc: 0x2C08     | offset to vtable
  +0x1974 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1977 | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x1978 | 28 00                   | uint16_t   | 0x0028 (40)                        | table field `id` (UShort)
  +0x197A | 54 00                   | uint16_t   | 0x0054 (84)                        | table field `offset` (UShort)
  +0x197C | 08 01 00 00             | UOffset32  | 0x00000108 (264) Loc: 0x1A84       | offset to field `name` (string)
  +0x1980 | F8 00 00 00             | UOffset32  | 0x000000F8 (248) Loc: 0x1A78       | offset to field `type` (table)
  +0x1984 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1988         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1988 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of vector (# items)
  +0x198C | B4 00 00 00             | UOffset32  | 0x000000B4 (180) Loc: 0x1A40       | offset to table[0]
  +0x1990 | 80 00 00 00             | UOffset32  | 0x00000080 (128) Loc: 0x1A10       | offset to table[1]
  +0x1994 | 50 00 00 00             | UOffset32  | 0x00000050 (80) Loc: 0x19E4        | offset to table[2]
  +0x1998 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x19BC        | offset to table[3]
  +0x199C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x19A0         | offset to table[4]

table (reflection.KeyValue):
  +0x19A0 | 20 E1 FF FF             | SOffset32  | 0xFFFFE120 (-7904) Loc: 0x3880     | offset to vtable
  +0x19A4 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x19B4        | offset to field `key` (string)
  +0x19A8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x19AC         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x19AC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x19B0 | 34 30                   | char[2]    | 40                                 | string literal
  +0x19B2 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x19B4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x19B8 | 69 64                   | char[2]    | id                                 | string literal
  +0x19BA | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x19BC | 3C E1 FF FF             | SOffset32  | 0xFFFFE13C (-7876) Loc: 0x3880     | offset to vtable
  +0x19C0 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x19D8        | offset to field `key` (string)
  +0x19C4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x19C8         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x19C8 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x19CC | 66 6E 76 31 61 5F 36 34 | char[8]    | fnv1a_64                           | string literal
  +0x19D4 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x19D8 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x19DC | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x19E0 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x19E4 | 64 E1 FF FF             | SOffset32  | 0xFFFFE164 (-7836) Loc: 0x3880     | offset to vtable
  +0x19E8 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x1A00        | offset to field `key` (string)
  +0x19EC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x19F0         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x19F0 | 0B 00 00 00             | uint32_t   | 0x0000000B (11)                    | length of string
  +0x19F4 | 52 65 66 65 72 72 61 62 | char[11]   | Referrab                           | string literal
  +0x19FC | 6C 65 54                |            | leT
  +0x19FF | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1A00 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x1A04 | 63 70 70 5F 74 79 70 65 | char[8]    | cpp_type                           | string literal
  +0x1A0C | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x1A10 | 90 E1 FF FF             | SOffset32  | 0xFFFFE190 (-7792) Loc: 0x3880     | offset to vtable
  +0x1A14 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x1A28        | offset to field `key` (string)
  +0x1A18 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1A1C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1A1C | 06 00 00 00             | uint32_t   | 0x00000006 (6)                     | length of string
  +0x1A20 | 2E 67 65 74 28 29       | char[6]    | .get()                             | string literal
  +0x1A26 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1A28 | 10 00 00 00             | uint32_t   | 0x00000010 (16)                    | length of string
  +0x1A2C | 63 70 70 5F 70 74 72 5F | char[16]   | cpp_ptr_                           | string literal
  +0x1A34 | 74 79 70 65 5F 67 65 74 |            | type_get
  +0x1A3C | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x1A40 | C0 E1 FF FF             | SOffset32  | 0xFFFFE1C0 (-7744) Loc: 0x3880     | offset to vtable
  +0x1A44 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x1A64        | offset to field `key` (string)
  +0x1A48 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1A4C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1A4C | 10 00 00 00             | uint32_t   | 0x00000010 (16)                    | length of string
  +0x1A50 | 64 65 66 61 75 6C 74 5F | char[16]   | default_                           | string literal
  +0x1A58 | 70 74 72 5F 74 79 70 65 |            | ptr_type
  +0x1A60 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x1A64 | 0C 00 00 00             | uint32_t   | 0x0000000C (12)                    | length of string
  +0x1A68 | 63 70 70 5F 70 74 72 5F | char[12]   | cpp_ptr_                           | string literal
  +0x1A70 | 74 79 70 65             |            | type
  +0x1A74 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x1A78 | 18 EE FF FF             | SOffset32  | 0xFFFFEE18 (-4584) Loc: 0x2C60     | offset to vtable
  +0x1A7C | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x1A7E | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x1A7F | 0A                      | uint8_t    | 0x0A (10)                          | table field `element` (Byte)
  +0x1A80 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1A84 | 1E 00 00 00             | uint32_t   | 0x0000001E (30)                    | length of string
  +0x1A88 | 76 65 63 74 6F 72 5F 6F | char[30]   | vector_o                           | string literal
  +0x1A90 | 66 5F 63 6F 5F 6F 77 6E |            | f_co_own
  +0x1A98 | 69 6E 67 5F 72 65 66 65 |            | ing_refe
  +0x1AA0 | 72 65 6E 63 65 73       |            | rences
  +0x1AA6 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x1AA8 | 90 EF FF FF             | SOffset32  | 0xFFFFEF90 (-4208) Loc: 0x2B18     | offset to vtable
  +0x1AAC | 27 00                   | uint16_t   | 0x0027 (39)                        | table field `id` (UShort)
  +0x1AAE | 52 00                   | uint16_t   | 0x0052 (82)                        | table field `offset` (UShort)
  +0x1AB0 | CC 00 00 00             | UOffset32  | 0x000000CC (204) Loc: 0x1B7C       | offset to field `name` (string)
  +0x1AB4 | B8 00 00 00             | UOffset32  | 0x000000B8 (184) Loc: 0x1B6C       | offset to field `type` (table)
  +0x1AB8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1ABC         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1ABC | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of vector (# items)
  +0x1AC0 | 80 00 00 00             | UOffset32  | 0x00000080 (128) Loc: 0x1B40       | offset to table[0]
  +0x1AC4 | 50 00 00 00             | UOffset32  | 0x00000050 (80) Loc: 0x1B14        | offset to table[1]
  +0x1AC8 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x1AEC        | offset to table[2]
  +0x1ACC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1AD0         | offset to table[3]

table (reflection.KeyValue):
  +0x1AD0 | 50 E2 FF FF             | SOffset32  | 0xFFFFE250 (-7600) Loc: 0x3880     | offset to vtable
  +0x1AD4 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1AE4        | offset to field `key` (string)
  +0x1AD8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1ADC         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1ADC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1AE0 | 33 39                   | char[2]    | 39                                 | string literal
  +0x1AE2 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1AE4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1AE8 | 69 64                   | char[2]    | id                                 | string literal
  +0x1AEA | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x1AEC | 6C E2 FF FF             | SOffset32  | 0xFFFFE26C (-7572) Loc: 0x3880     | offset to vtable
  +0x1AF0 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x1B08        | offset to field `key` (string)
  +0x1AF4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1AF8         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1AF8 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x1AFC | 66 6E 76 31 61 5F 36 34 | char[8]    | fnv1a_64                           | string literal
  +0x1B04 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x1B08 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x1B0C | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x1B10 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x1B14 | 94 E2 FF FF             | SOffset32  | 0xFFFFE294 (-7532) Loc: 0x3880     | offset to vtable
  +0x1B18 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x1B30        | offset to field `key` (string)
  +0x1B1C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1B20         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1B20 | 0B 00 00 00             | uint32_t   | 0x0000000B (11)                    | length of string
  +0x1B24 | 52 65 66 65 72 72 61 62 | char[11]   | Referrab                           | string literal
  +0x1B2C | 6C 65 54                |            | leT
  +0x1B2F | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1B30 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x1B34 | 63 70 70 5F 74 79 70 65 | char[8]    | cpp_type                           | string literal
  +0x1B3C | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x1B40 | C0 E2 FF FF             | SOffset32  | 0xFFFFE2C0 (-7488) Loc: 0x3880     | offset to vtable
  +0x1B44 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x1B58        | offset to field `key` (string)
  +0x1B48 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1B4C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1B4C | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x1B50 | 6E 61 6B 65 64          | char[5]    | naked                              | string literal
  +0x1B55 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x1B58 | 0C 00 00 00             | uint32_t   | 0x0000000C (12)                    | length of string
  +0x1B5C | 63 70 70 5F 70 74 72 5F | char[12]   | cpp_ptr_                           | string literal
  +0x1B64 | 74 79 70 65             |            | type
  +0x1B68 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x1B6C | 40 E5 FF FF             | SOffset32  | 0xFFFFE540 (-6848) Loc: 0x362C     | offset to vtable
  +0x1B70 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1B73 | 0A                      | uint8_t    | 0x0A (10)                          | table field `base_type` (Byte)
  +0x1B74 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x1B78 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1B7C | 13 00 00 00             | uint32_t   | 0x00000013 (19)                    | length of string
  +0x1B80 | 63 6F 5F 6F 77 6E 69 6E | char[19]   | co_ownin                           | string literal
  +0x1B88 | 67 5F 72 65 66 65 72 65 |            | g_refere
  +0x1B90 | 6E 63 65                |            | nce
  +0x1B93 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x1B94 | 8C EF FF FF             | SOffset32  | 0xFFFFEF8C (-4212) Loc: 0x2C08     | offset to vtable
  +0x1B98 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1B9B | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x1B9C | 26 00                   | uint16_t   | 0x0026 (38)                        | table field `id` (UShort)
  +0x1B9E | 50 00                   | uint16_t   | 0x0050 (80)                        | table field `offset` (UShort)
  +0x1BA0 | 7C 00 00 00             | UOffset32  | 0x0000007C (124) Loc: 0x1C1C       | offset to field `name` (string)
  +0x1BA4 | 68 00 00 00             | UOffset32  | 0x00000068 (104) Loc: 0x1C0C       | offset to field `type` (table)
  +0x1BA8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1BAC         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1BAC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x1BB0 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x1BD4        | offset to table[0]
  +0x1BB4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1BB8         | offset to table[1]

table (reflection.KeyValue):
  +0x1BB8 | 38 E3 FF FF             | SOffset32  | 0xFFFFE338 (-7368) Loc: 0x3880     | offset to vtable
  +0x1BBC | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1BCC        | offset to field `key` (string)
  +0x1BC0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1BC4         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1BC4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1BC8 | 33 38                   | char[2]    | 38                                 | string literal
  +0x1BCA | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1BCC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1BD0 | 69 64                   | char[2]    | id                                 | string literal
  +0x1BD2 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x1BD4 | 54 E3 FF FF             | SOffset32  | 0xFFFFE354 (-7340) Loc: 0x3880     | offset to vtable
  +0x1BD8 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x1BF8        | offset to field `key` (string)
  +0x1BDC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1BE0         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1BE0 | 10 00 00 00             | uint32_t   | 0x00000010 (16)                    | length of string
  +0x1BE4 | 64 65 66 61 75 6C 74 5F | char[16]   | default_                           | string literal
  +0x1BEC | 70 74 72 5F 74 79 70 65 |            | ptr_type
  +0x1BF4 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x1BF8 | 0C 00 00 00             | uint32_t   | 0x0000000C (12)                    | length of string
  +0x1BFC | 63 70 70 5F 70 74 72 5F | char[12]   | cpp_ptr_                           | string literal
  +0x1C04 | 74 79 70 65             |            | type
  +0x1C08 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x1C0C | 78 F1 FF FF             | SOffset32  | 0xFFFFF178 (-3720) Loc: 0x2A94     | offset to vtable
  +0x1C10 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x1C12 | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x1C13 | 0F                      | uint8_t    | 0x0F (15)                          | table field `element` (Byte)
  +0x1C14 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | table field `index` (Int)
  +0x1C18 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1C1C | 1C 00 00 00             | uint32_t   | 0x0000001C (28)                    | length of string
  +0x1C20 | 76 65 63 74 6F 72 5F 6F | char[28]   | vector_o                           | string literal
  +0x1C28 | 66 5F 73 74 72 6F 6E 67 |            | f_strong
  +0x1C30 | 5F 72 65 66 65 72 72 61 |            | _referra
  +0x1C38 | 62 6C 65 73             |            | bles
  +0x1C3C | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x1C40 | 38 F0 FF FF             | SOffset32  | 0xFFFFF038 (-4040) Loc: 0x2C08     | offset to vtable
  +0x1C44 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1C47 | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x1C48 | 25 00                   | uint16_t   | 0x0025 (37)                        | table field `id` (UShort)
  +0x1C4A | 4E 00                   | uint16_t   | 0x004E (78)                        | table field `offset` (UShort)
  +0x1C4C | C8 00 00 00             | UOffset32  | 0x000000C8 (200) Loc: 0x1D14       | offset to field `name` (string)
  +0x1C50 | B8 00 00 00             | UOffset32  | 0x000000B8 (184) Loc: 0x1D08       | offset to field `type` (table)
  +0x1C54 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1C58         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1C58 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of vector (# items)
  +0x1C5C | 80 00 00 00             | UOffset32  | 0x00000080 (128) Loc: 0x1CDC       | offset to table[0]
  +0x1C60 | 50 00 00 00             | UOffset32  | 0x00000050 (80) Loc: 0x1CB0        | offset to table[1]
  +0x1C64 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x1C88        | offset to table[2]
  +0x1C68 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1C6C         | offset to table[3]

table (reflection.KeyValue):
  +0x1C6C | EC E3 FF FF             | SOffset32  | 0xFFFFE3EC (-7188) Loc: 0x3880     | offset to vtable
  +0x1C70 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1C80        | offset to field `key` (string)
  +0x1C74 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1C78         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1C78 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1C7C | 33 37                   | char[2]    | 37                                 | string literal
  +0x1C7E | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1C80 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1C84 | 69 64                   | char[2]    | id                                 | string literal
  +0x1C86 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x1C88 | 08 E4 FF FF             | SOffset32  | 0xFFFFE408 (-7160) Loc: 0x3880     | offset to vtable
  +0x1C8C | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x1CA4        | offset to field `key` (string)
  +0x1C90 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1C94         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1C94 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x1C98 | 66 6E 76 31 61 5F 36 34 | char[8]    | fnv1a_64                           | string literal
  +0x1CA0 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x1CA4 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x1CA8 | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x1CAC | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x1CB0 | 30 E4 FF FF             | SOffset32  | 0xFFFFE430 (-7120) Loc: 0x3880     | offset to vtable
  +0x1CB4 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x1CCC        | offset to field `key` (string)
  +0x1CB8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1CBC         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1CBC | 0B 00 00 00             | uint32_t   | 0x0000000B (11)                    | length of string
  +0x1CC0 | 52 65 66 65 72 72 61 62 | char[11]   | Referrab                           | string literal
  +0x1CC8 | 6C 65 54                |            | leT
  +0x1CCB | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1CCC | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x1CD0 | 63 70 70 5F 74 79 70 65 | char[8]    | cpp_type                           | string literal
  +0x1CD8 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x1CDC | 5C E4 FF FF             | SOffset32  | 0xFFFFE45C (-7076) Loc: 0x3880     | offset to vtable
  +0x1CE0 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x1CF4        | offset to field `key` (string)
  +0x1CE4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1CE8         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1CE8 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x1CEC | 6E 61 6B 65 64          | char[5]    | naked                              | string literal
  +0x1CF1 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x1CF4 | 0C 00 00 00             | uint32_t   | 0x0000000C (12)                    | length of string
  +0x1CF8 | 63 70 70 5F 70 74 72 5F | char[12]   | cpp_ptr_                           | string literal
  +0x1D00 | 74 79 70 65             |            | type
  +0x1D04 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x1D08 | A8 F0 FF FF             | SOffset32  | 0xFFFFF0A8 (-3928) Loc: 0x2C60     | offset to vtable
  +0x1D0C | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x1D0E | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x1D0F | 0A                      | uint8_t    | 0x0A (10)                          | table field `element` (Byte)
  +0x1D10 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1D14 | 19 00 00 00             | uint32_t   | 0x00000019 (25)                    | length of string
  +0x1D18 | 76 65 63 74 6F 72 5F 6F | char[25]   | vector_o                           | string literal
  +0x1D20 | 66 5F 77 65 61 6B 5F 72 |            | f_weak_r
  +0x1D28 | 65 66 65 72 65 6E 63 65 |            | eference
  +0x1D30 | 73                      |            | s
  +0x1D31 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x1D34 | 1C F2 FF FF             | SOffset32  | 0xFFFFF21C (-3556) Loc: 0x2B18     | offset to vtable
  +0x1D38 | 24 00                   | uint16_t   | 0x0024 (36)                        | table field `id` (UShort)
  +0x1D3A | 4C 00                   | uint16_t   | 0x004C (76)                        | table field `offset` (UShort)
  +0x1D3C | CC 00 00 00             | UOffset32  | 0x000000CC (204) Loc: 0x1E08       | offset to field `name` (string)
  +0x1D40 | B8 00 00 00             | UOffset32  | 0x000000B8 (184) Loc: 0x1DF8       | offset to field `type` (table)
  +0x1D44 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1D48         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1D48 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of vector (# items)
  +0x1D4C | 80 00 00 00             | UOffset32  | 0x00000080 (128) Loc: 0x1DCC       | offset to table[0]
  +0x1D50 | 50 00 00 00             | UOffset32  | 0x00000050 (80) Loc: 0x1DA0        | offset to table[1]
  +0x1D54 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x1D78        | offset to table[2]
  +0x1D58 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1D5C         | offset to table[3]

table (reflection.KeyValue):
  +0x1D5C | DC E4 FF FF             | SOffset32  | 0xFFFFE4DC (-6948) Loc: 0x3880     | offset to vtable
  +0x1D60 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1D70        | offset to field `key` (string)
  +0x1D64 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1D68         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1D68 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1D6C | 33 36                   | char[2]    | 36                                 | string literal
  +0x1D6E | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1D70 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1D74 | 69 64                   | char[2]    | id                                 | string literal
  +0x1D76 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x1D78 | F8 E4 FF FF             | SOffset32  | 0xFFFFE4F8 (-6920) Loc: 0x3880     | offset to vtable
  +0x1D7C | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x1D94        | offset to field `key` (string)
  +0x1D80 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1D84         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1D84 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x1D88 | 66 6E 76 31 61 5F 36 34 | char[8]    | fnv1a_64                           | string literal
  +0x1D90 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x1D94 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x1D98 | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x1D9C | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x1DA0 | 20 E5 FF FF             | SOffset32  | 0xFFFFE520 (-6880) Loc: 0x3880     | offset to vtable
  +0x1DA4 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x1DBC        | offset to field `key` (string)
  +0x1DA8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1DAC         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1DAC | 0B 00 00 00             | uint32_t   | 0x0000000B (11)                    | length of string
  +0x1DB0 | 52 65 66 65 72 72 61 62 | char[11]   | Referrab                           | string literal
  +0x1DB8 | 6C 65 54                |            | leT
  +0x1DBB | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1DBC | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x1DC0 | 63 70 70 5F 74 79 70 65 | char[8]    | cpp_type                           | string literal
  +0x1DC8 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x1DCC | 4C E5 FF FF             | SOffset32  | 0xFFFFE54C (-6836) Loc: 0x3880     | offset to vtable
  +0x1DD0 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x1DE4        | offset to field `key` (string)
  +0x1DD4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1DD8         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1DD8 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x1DDC | 6E 61 6B 65 64          | char[5]    | naked                              | string literal
  +0x1DE1 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x1DE4 | 0C 00 00 00             | uint32_t   | 0x0000000C (12)                    | length of string
  +0x1DE8 | 63 70 70 5F 70 74 72 5F | char[12]   | cpp_ptr_                           | string literal
  +0x1DF0 | 74 79 70 65             |            | type
  +0x1DF4 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x1DF8 | CC E7 FF FF             | SOffset32  | 0xFFFFE7CC (-6196) Loc: 0x362C     | offset to vtable
  +0x1DFC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1DFF | 0A                      | uint8_t    | 0x0A (10)                          | table field `base_type` (Byte)
  +0x1E00 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x1E04 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1E08 | 15 00 00 00             | uint32_t   | 0x00000015 (21)                    | length of string
  +0x1E0C | 73 69 6E 67 6C 65 5F 77 | char[21]   | single_w                           | string literal
  +0x1E14 | 65 61 6B 5F 72 65 66 65 |            | eak_refe
  +0x1E1C | 72 65 6E 63 65          |            | rence
  +0x1E21 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x1E24 | 1C F2 FF FF             | SOffset32  | 0xFFFFF21C (-3556) Loc: 0x2C08     | offset to vtable
  +0x1E28 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1E2B | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x1E2C | 23 00                   | uint16_t   | 0x0023 (35)                        | table field `id` (UShort)
  +0x1E2E | 4A 00                   | uint16_t   | 0x004A (74)                        | table field `offset` (UShort)
  +0x1E30 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x1E70        | offset to field `name` (string)
  +0x1E34 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x1E60        | offset to field `type` (table)
  +0x1E38 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1E3C         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1E3C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x1E40 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1E44         | offset to table[0]

table (reflection.KeyValue):
  +0x1E44 | C4 E5 FF FF             | SOffset32  | 0xFFFFE5C4 (-6716) Loc: 0x3880     | offset to vtable
  +0x1E48 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1E58        | offset to field `key` (string)
  +0x1E4C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1E50         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1E50 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1E54 | 33 35                   | char[2]    | 35                                 | string literal
  +0x1E56 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1E58 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1E5C | 69 64                   | char[2]    | id                                 | string literal
  +0x1E5E | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x1E60 | CC F3 FF FF             | SOffset32  | 0xFFFFF3CC (-3124) Loc: 0x2A94     | offset to vtable
  +0x1E64 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x1E66 | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x1E67 | 0F                      | uint8_t    | 0x0F (15)                          | table field `element` (Byte)
  +0x1E68 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | table field `index` (Int)
  +0x1E6C | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1E70 | 15 00 00 00             | uint32_t   | 0x00000015 (21)                    | length of string
  +0x1E74 | 76 65 63 74 6F 72 5F 6F | char[21]   | vector_o                           | string literal
  +0x1E7C | 66 5F 72 65 66 65 72 72 |            | f_referr
  +0x1E84 | 61 62 6C 65 73          |            | ables
  +0x1E89 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x1E8C | 84 F2 FF FF             | SOffset32  | 0xFFFFF284 (-3452) Loc: 0x2C08     | offset to vtable
  +0x1E90 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1E93 | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x1E94 | 22 00                   | uint16_t   | 0x0022 (34)                        | table field `id` (UShort)
  +0x1E96 | 48 00                   | uint16_t   | 0x0048 (72)                        | table field `offset` (UShort)
  +0x1E98 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x1ED8        | offset to field `name` (string)
  +0x1E9C | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x1EC8        | offset to field `type` (table)
  +0x1EA0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1EA4         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1EA4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x1EA8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1EAC         | offset to table[0]

table (reflection.KeyValue):
  +0x1EAC | 2C E6 FF FF             | SOffset32  | 0xFFFFE62C (-6612) Loc: 0x3880     | offset to vtable
  +0x1EB0 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1EC0        | offset to field `key` (string)
  +0x1EB4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1EB8         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1EB8 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1EBC | 33 34                   | char[2]    | 34                                 | string literal
  +0x1EBE | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1EC0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1EC4 | 69 64                   | char[2]    | id                                 | string literal
  +0x1EC6 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x1EC8 | F8 E6 FF FF             | SOffset32  | 0xFFFFE6F8 (-6408) Loc: 0x37D0     | offset to vtable
  +0x1ECC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1ECF | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x1ED0 | 0B 00 00 00             | uint32_t   | 0x0000000B (11)                    | table field `index` (Int)
  +0x1ED4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1ED8 | 15 00 00 00             | uint32_t   | 0x00000015 (21)                    | length of string
  +0x1EDC | 70 61 72 65 6E 74 5F 6E | char[21]   | parent_n                           | string literal
  +0x1EE4 | 61 6D 65 73 70 61 63 65 |            | amespace
  +0x1EEC | 5F 74 65 73 74          |            | _test
  +0x1EF1 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x1EF4 | EC F2 FF FF             | SOffset32  | 0xFFFFF2EC (-3348) Loc: 0x2C08     | offset to vtable
  +0x1EF8 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1EFB | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x1EFC | 21 00                   | uint16_t   | 0x0021 (33)                        | table field `id` (UShort)
  +0x1EFE | 46 00                   | uint16_t   | 0x0046 (70)                        | table field `offset` (UShort)
  +0x1F00 | 3C 00 00 00             | UOffset32  | 0x0000003C (60) Loc: 0x1F3C        | offset to field `name` (string)
  +0x1F04 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x1F30        | offset to field `type` (table)
  +0x1F08 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1F0C         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1F0C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x1F10 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1F14         | offset to table[0]

table (reflection.KeyValue):
  +0x1F14 | 94 E6 FF FF             | SOffset32  | 0xFFFFE694 (-6508) Loc: 0x3880     | offset to vtable
  +0x1F18 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1F28        | offset to field `key` (string)
  +0x1F1C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1F20         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1F20 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1F24 | 33 33                   | char[2]    | 33                                 | string literal
  +0x1F26 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1F28 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1F2C | 69 64                   | char[2]    | id                                 | string literal
  +0x1F2E | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x1F30 | D0 F2 FF FF             | SOffset32  | 0xFFFFF2D0 (-3376) Loc: 0x2C60     | offset to vtable
  +0x1F34 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x1F36 | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x1F37 | 0C                      | uint8_t    | 0x0C (12)                          | table field `element` (Byte)
  +0x1F38 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1F3C | 11 00 00 00             | uint32_t   | 0x00000011 (17)                    | length of string
  +0x1F40 | 76 65 63 74 6F 72 5F 6F | char[17]   | vector_o                           | string literal
  +0x1F48 | 66 5F 64 6F 75 62 6C 65 |            | f_double
  +0x1F50 | 73                      |            | s
  +0x1F51 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x1F54 | 4C F3 FF FF             | SOffset32  | 0xFFFFF34C (-3252) Loc: 0x2C08     | offset to vtable
  +0x1F58 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1F5B | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x1F5C | 20 00                   | uint16_t   | 0x0020 (32)                        | table field `id` (UShort)
  +0x1F5E | 44 00                   | uint16_t   | 0x0044 (68)                        | table field `offset` (UShort)
  +0x1F60 | 3C 00 00 00             | UOffset32  | 0x0000003C (60) Loc: 0x1F9C        | offset to field `name` (string)
  +0x1F64 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x1F90        | offset to field `type` (table)
  +0x1F68 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1F6C         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1F6C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x1F70 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1F74         | offset to table[0]

table (reflection.KeyValue):
  +0x1F74 | F4 E6 FF FF             | SOffset32  | 0xFFFFE6F4 (-6412) Loc: 0x3880     | offset to vtable
  +0x1F78 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1F88        | offset to field `key` (string)
  +0x1F7C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1F80         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1F80 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1F84 | 33 32                   | char[2]    | 32                                 | string literal
  +0x1F86 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1F88 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1F8C | 69 64                   | char[2]    | id                                 | string literal
  +0x1F8E | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x1F90 | 30 F3 FF FF             | SOffset32  | 0xFFFFF330 (-3280) Loc: 0x2C60     | offset to vtable
  +0x1F94 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x1F96 | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x1F97 | 09                      | uint8_t    | 0x09 (9)                           | table field `element` (Byte)
  +0x1F98 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1F9C | 0F 00 00 00             | uint32_t   | 0x0000000F (15)                    | length of string
  +0x1FA0 | 76 65 63 74 6F 72 5F 6F | char[15]   | vector_o                           | string literal
  +0x1FA8 | 66 5F 6C 6F 6E 67 73    |            | f_longs
  +0x1FAF | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x1FB0 | A8 F3 FF FF             | SOffset32  | 0xFFFFF3A8 (-3160) Loc: 0x2C08     | offset to vtable
  +0x1FB4 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x1FB7 | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x1FB8 | 1F 00                   | uint16_t   | 0x001F (31)                        | table field `id` (UShort)
  +0x1FBA | 42 00                   | uint16_t   | 0x0042 (66)                        | table field `offset` (UShort)
  +0x1FBC | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x1FFC        | offset to field `name` (string)
  +0x1FC0 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x1FEC        | offset to field `type` (table)
  +0x1FC4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1FC8         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x1FC8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x1FCC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1FD0         | offset to table[0]

table (reflection.KeyValue):
  +0x1FD0 | 50 E7 FF FF             | SOffset32  | 0xFFFFE750 (-6320) Loc: 0x3880     | offset to vtable
  +0x1FD4 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x1FE4        | offset to field `key` (string)
  +0x1FD8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x1FDC         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x1FDC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1FE0 | 33 31                   | char[2]    | 31                                 | string literal
  +0x1FE2 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x1FE4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x1FE8 | 69 64                   | char[2]    | id                                 | string literal
  +0x1FEA | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x1FEC | 58 F5 FF FF             | SOffset32  | 0xFFFFF558 (-2728) Loc: 0x2A94     | offset to vtable
  +0x1FF0 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x1FF2 | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x1FF3 | 0F                      | uint8_t    | 0x0F (15)                          | table field `element` (Byte)
  +0x1FF4 | 06 00 00 00             | uint32_t   | 0x00000006 (6)                     | table field `index` (Int)
  +0x1FF8 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x1FFC | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x2000 | 74 65 73 74 35          | char[5]    | test5                              | string literal
  +0x2005 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x2008 | 00 F4 FF FF             | SOffset32  | 0xFFFFF400 (-3072) Loc: 0x2C08     | offset to vtable
  +0x200C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x200F | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x2010 | 1E 00                   | uint16_t   | 0x001E (30)                        | table field `id` (UShort)
  +0x2012 | 40 00                   | uint16_t   | 0x0040 (64)                        | table field `offset` (UShort)
  +0x2014 | 64 00 00 00             | UOffset32  | 0x00000064 (100) Loc: 0x2078       | offset to field `name` (string)
  +0x2018 | 54 00 00 00             | UOffset32  | 0x00000054 (84) Loc: 0x206C        | offset to field `type` (table)
  +0x201C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2020         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x2020 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x2024 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x2048        | offset to table[0]
  +0x2028 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x202C         | offset to table[1]

table (reflection.KeyValue):
  +0x202C | AC E7 FF FF             | SOffset32  | 0xFFFFE7AC (-6228) Loc: 0x3880     | offset to vtable
  +0x2030 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2040        | offset to field `key` (string)
  +0x2034 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2038         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2038 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x203C | 33 30                   | char[2]    | 30                                 | string literal
  +0x203E | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x2040 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2044 | 69 64                   | char[2]    | id                                 | string literal
  +0x2046 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x2048 | C8 E7 FF FF             | SOffset32  | 0xFFFFE7C8 (-6200) Loc: 0x3880     | offset to vtable
  +0x204C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x205C        | offset to field `key` (string)
  +0x2050 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2054         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2054 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2058 | 30                      | char[1]    | 0                                  | string literal
  +0x2059 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x205C | 0A 00 00 00             | uint32_t   | 0x0000000A (10)                    | length of string
  +0x2060 | 66 6C 65 78 62 75 66 66 | char[10]   | flexbuff                           | string literal
  +0x2068 | 65 72                   |            | er
  +0x206A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x206C | 0C F4 FF FF             | SOffset32  | 0xFFFFF40C (-3060) Loc: 0x2C60     | offset to vtable
  +0x2070 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x2072 | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x2073 | 04                      | uint8_t    | 0x04 (4)                           | table field `element` (Byte)
  +0x2074 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2078 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x207C | 66 6C 65 78             | char[4]    | flex                               | string literal
  +0x2080 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x2084 | 7C F4 FF FF             | SOffset32  | 0xFFFFF47C (-2948) Loc: 0x2C08     | offset to vtable
  +0x2088 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x208B | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x208C | 1D 00                   | uint16_t   | 0x001D (29)                        | table field `id` (UShort)
  +0x208E | 3E 00                   | uint16_t   | 0x003E (62)                        | table field `offset` (UShort)
  +0x2090 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x20D0        | offset to field `name` (string)
  +0x2094 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x20C0        | offset to field `type` (table)
  +0x2098 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x209C         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x209C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x20A0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x20A4         | offset to table[0]

table (reflection.KeyValue):
  +0x20A4 | 24 E8 FF FF             | SOffset32  | 0xFFFFE824 (-6108) Loc: 0x3880     | offset to vtable
  +0x20A8 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x20B8        | offset to field `key` (string)
  +0x20AC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x20B0         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x20B0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x20B4 | 32 39                   | char[2]    | 29                                 | string literal
  +0x20B6 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x20B8 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x20BC | 69 64                   | char[2]    | id                                 | string literal
  +0x20BE | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x20C0 | 2C F6 FF FF             | SOffset32  | 0xFFFFF62C (-2516) Loc: 0x2A94     | offset to vtable
  +0x20C4 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x20C6 | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x20C7 | 0F                      | uint8_t    | 0x0F (15)                          | table field `element` (Byte)
  +0x20C8 | 00 00 00 00             | uint32_t   | 0x00000000 (0)                     | table field `index` (Int)
  +0x20CC | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x20D0 | 17 00 00 00             | uint32_t   | 0x00000017 (23)                    | length of string
  +0x20D4 | 74 65 73 74 61 72 72 61 | char[23]   | testarra                           | string literal
  +0x20DC | 79 6F 66 73 6F 72 74 65 |            | yofsorte
  +0x20E4 | 64 73 74 72 75 63 74    |            | dstruct
  +0x20EB | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x20EC | E4 F4 FF FF             | SOffset32  | 0xFFFFF4E4 (-2844) Loc: 0x2C08     | offset to vtable
  +0x20F0 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x20F3 | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x20F4 | 1C 00                   | uint16_t   | 0x001C (28)                        | table field `id` (UShort)
  +0x20F6 | 3C 00                   | uint16_t   | 0x003C (60)                        | table field `offset` (UShort)
  +0x20F8 | 3C 00 00 00             | UOffset32  | 0x0000003C (60) Loc: 0x2134        | offset to field `name` (string)
  +0x20FC | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x2128        | offset to field `type` (table)
  +0x2100 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2104         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x2104 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x2108 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x210C         | offset to table[0]

table (reflection.KeyValue):
  +0x210C | 8C E8 FF FF             | SOffset32  | 0xFFFFE88C (-6004) Loc: 0x3880     | offset to vtable
  +0x2110 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2120        | offset to field `key` (string)
  +0x2114 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2118         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2118 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x211C | 32 38                   | char[2]    | 28                                 | string literal
  +0x211E | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x2120 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2124 | 69 64                   | char[2]    | id                                 | string literal
  +0x2126 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x2128 | C8 F4 FF FF             | SOffset32  | 0xFFFFF4C8 (-2872) Loc: 0x2C60     | offset to vtable
  +0x212C | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x212E | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x212F | 0D                      | uint8_t    | 0x0D (13)                          | table field `element` (Byte)
  +0x2130 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2134 | 12 00 00 00             | uint32_t   | 0x00000012 (18)                    | length of string
  +0x2138 | 74 65 73 74 61 72 72 61 | char[18]   | testarra                           | string literal
  +0x2140 | 79 6F 66 73 74 72 69 6E |            | yofstrin
  +0x2148 | 67 32                   |            | g2
  +0x214A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x214C | 34 F6 FF FF             | SOffset32  | 0xFFFFF634 (-2508) Loc: 0x2B18     | offset to vtable
  +0x2150 | 1B 00                   | uint16_t   | 0x001B (27)                        | table field `id` (UShort)
  +0x2152 | 3A 00                   | uint16_t   | 0x003A (58)                        | table field `offset` (UShort)
  +0x2154 | 3C 00 00 00             | UOffset32  | 0x0000003C (60) Loc: 0x2190        | offset to field `name` (string)
  +0x2158 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x2184        | offset to field `type` (table)
  +0x215C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2160         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x2160 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x2164 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2168         | offset to table[0]

table (reflection.KeyValue):
  +0x2168 | E8 E8 FF FF             | SOffset32  | 0xFFFFE8E8 (-5912) Loc: 0x3880     | offset to vtable
  +0x216C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x217C        | offset to field `key` (string)
  +0x2170 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2174         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2174 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2178 | 32 37                   | char[2]    | 27                                 | string literal
  +0x217A | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x217C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2180 | 69 64                   | char[2]    | id                                 | string literal
  +0x2182 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x2184 | F0 E8 FF FF             | SOffset32  | 0xFFFFE8F0 (-5904) Loc: 0x3894     | offset to vtable
  +0x2188 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x218B | 0B                      | uint8_t    | 0x0B (11)                          | table field `base_type` (Byte)
  +0x218C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2190 | 06 00 00 00             | uint32_t   | 0x00000006 (6)                     | length of string
  +0x2194 | 74 65 73 74 66 33       | char[6]    | testf3                             | string literal
  +0x219A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x219C | A8 FF FF FF             | SOffset32  | 0xFFFFFFA8 (-88) Loc: 0x21F4       | offset to vtable
  +0x21A0 | 1A 00                   | uint16_t   | 0x001A (26)                        | table field `id` (UShort)
  +0x21A2 | 38 00                   | uint16_t   | 0x0038 (56)                        | table field `offset` (UShort)
  +0x21A4 | 44 00 00 00             | UOffset32  | 0x00000044 (68) Loc: 0x21E8        | offset to field `name` (string)
  +0x21A8 | 34 00 00 00             | UOffset32  | 0x00000034 (52) Loc: 0x21DC        | offset to field `type` (table)
  +0x21AC | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x21B8        | offset to field `attributes` (vector)
  +0x21B0 | 00 00 00 00 00 00 08 40 | double     | 0x4008000000000000 (3)             | table field `default_real` (Double)

vector (reflection.Field.attributes):
  +0x21B8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x21BC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x21C0         | offset to table[0]

table (reflection.KeyValue):
  +0x21C0 | 40 E9 FF FF             | SOffset32  | 0xFFFFE940 (-5824) Loc: 0x3880     | offset to vtable
  +0x21C4 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x21D4        | offset to field `key` (string)
  +0x21C8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x21CC         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x21CC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x21D0 | 32 36                   | char[2]    | 26                                 | string literal
  +0x21D2 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x21D4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x21D8 | 69 64                   | char[2]    | id                                 | string literal
  +0x21DA | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x21DC | 48 E9 FF FF             | SOffset32  | 0xFFFFE948 (-5816) Loc: 0x3894     | offset to vtable
  +0x21E0 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x21E3 | 0B                      | uint8_t    | 0x0B (11)                          | table field `base_type` (Byte)
  +0x21E4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x21E8 | 06 00 00 00             | uint32_t   | 0x00000006 (6)                     | length of string
  +0x21EC | 74 65 73 74 66 32       | char[6]    | testf2                             | string literal
  +0x21F2 | 00                      | char       | 0x00 (0)                           | string terminator

vtable (reflection.Field):
  +0x21F4 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of this vtable
  +0x21F6 | 1C 00                   | uint16_t   | 0x001C (28)                        | size of referring table
  +0x21F8 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x21FA | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `type` (id: 1)
  +0x21FC | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `id` (id: 2)
  +0x21FE | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `offset` (id: 3)
  +0x2200 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_integer` (id: 4) <defaults to 0> (Long)
  +0x2202 | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `default_real` (id: 5)
  +0x2204 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x2206 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x2208 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `key` (id: 8) <defaults to 0> (Bool)
  +0x220A | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `attributes` (id: 9)

table (reflection.Field):
  +0x220C | 18 00 00 00             | SOffset32  | 0x00000018 (24) Loc: 0x21F4        | offset to vtable
  +0x2210 | 19 00                   | uint16_t   | 0x0019 (25)                        | table field `id` (UShort)
  +0x2212 | 36 00                   | uint16_t   | 0x0036 (54)                        | table field `offset` (UShort)
  +0x2214 | 44 00 00 00             | UOffset32  | 0x00000044 (68) Loc: 0x2258        | offset to field `name` (string)
  +0x2218 | 34 00 00 00             | UOffset32  | 0x00000034 (52) Loc: 0x224C        | offset to field `type` (table)
  +0x221C | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x2228        | offset to field `attributes` (vector)
  +0x2220 | 6E 86 1B F0 F9 21 09 40 | double     | 0x400921F9F01B866E (3.14159)       | table field `default_real` (Double)

vector (reflection.Field.attributes):
  +0x2228 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x222C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2230         | offset to table[0]

table (reflection.KeyValue):
  +0x2230 | B0 E9 FF FF             | SOffset32  | 0xFFFFE9B0 (-5712) Loc: 0x3880     | offset to vtable
  +0x2234 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2244        | offset to field `key` (string)
  +0x2238 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x223C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x223C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2240 | 32 35                   | char[2]    | 25                                 | string literal
  +0x2242 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x2244 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2248 | 69 64                   | char[2]    | id                                 | string literal
  +0x224A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x224C | B8 E9 FF FF             | SOffset32  | 0xFFFFE9B8 (-5704) Loc: 0x3894     | offset to vtable
  +0x2250 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2253 | 0B                      | uint8_t    | 0x0B (11)                          | table field `base_type` (Byte)
  +0x2254 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2258 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x225C | 74 65 73 74 66          | char[5]    | testf                              | string literal
  +0x2261 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x2264 | 5C F6 FF FF             | SOffset32  | 0xFFFFF65C (-2468) Loc: 0x2C08     | offset to vtable
  +0x2268 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x226B | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x226C | 18 00                   | uint16_t   | 0x0018 (24)                        | table field `id` (UShort)
  +0x226E | 34 00                   | uint16_t   | 0x0034 (52)                        | table field `offset` (UShort)
  +0x2270 | 3C 00 00 00             | UOffset32  | 0x0000003C (60) Loc: 0x22AC        | offset to field `name` (string)
  +0x2274 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x22A0        | offset to field `type` (table)
  +0x2278 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x227C         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x227C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x2280 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2284         | offset to table[0]

table (reflection.KeyValue):
  +0x2284 | 04 EA FF FF             | SOffset32  | 0xFFFFEA04 (-5628) Loc: 0x3880     | offset to vtable
  +0x2288 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2298        | offset to field `key` (string)
  +0x228C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2290         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2290 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2294 | 32 34                   | char[2]    | 24                                 | string literal
  +0x2296 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x2298 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x229C | 69 64                   | char[2]    | id                                 | string literal
  +0x229E | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x22A0 | 40 F6 FF FF             | SOffset32  | 0xFFFFF640 (-2496) Loc: 0x2C60     | offset to vtable
  +0x22A4 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x22A6 | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x22A7 | 02                      | uint8_t    | 0x02 (2)                           | table field `element` (Byte)
  +0x22A8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x22AC | 10 00 00 00             | uint32_t   | 0x00000010 (16)                    | length of string
  +0x22B0 | 74 65 73 74 61 72 72 61 | char[16]   | testarra                           | string literal
  +0x22B8 | 79 6F 66 62 6F 6F 6C 73 |            | yofbools
  +0x22C0 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x22C4 | AC F7 FF FF             | SOffset32  | 0xFFFFF7AC (-2132) Loc: 0x2B18     | offset to vtable
  +0x22C8 | 17 00                   | uint16_t   | 0x0017 (23)                        | table field `id` (UShort)
  +0x22CA | 32 00                   | uint16_t   | 0x0032 (50)                        | table field `offset` (UShort)
  +0x22CC | 6C 00 00 00             | UOffset32  | 0x0000006C (108) Loc: 0x2338       | offset to field `name` (string)
  +0x22D0 | 58 00 00 00             | UOffset32  | 0x00000058 (88) Loc: 0x2328        | offset to field `type` (table)
  +0x22D4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x22D8         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x22D8 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x22DC | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x2300        | offset to table[0]
  +0x22E0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x22E4         | offset to table[1]

table (reflection.KeyValue):
  +0x22E4 | 64 EA FF FF             | SOffset32  | 0xFFFFEA64 (-5532) Loc: 0x3880     | offset to vtable
  +0x22E8 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x22F8        | offset to field `key` (string)
  +0x22EC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x22F0         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x22F0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x22F4 | 32 33                   | char[2]    | 23                                 | string literal
  +0x22F6 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x22F8 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x22FC | 69 64                   | char[2]    | id                                 | string literal
  +0x22FE | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x2300 | 80 EA FF FF             | SOffset32  | 0xFFFFEA80 (-5504) Loc: 0x3880     | offset to vtable
  +0x2304 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x231C        | offset to field `key` (string)
  +0x2308 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x230C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x230C | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x2310 | 66 6E 76 31 61 5F 36 34 | char[8]    | fnv1a_64                           | string literal
  +0x2318 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x231C | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x2320 | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x2324 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x2328 | FC EC FF FF             | SOffset32  | 0xFFFFECFC (-4868) Loc: 0x362C     | offset to vtable
  +0x232C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x232F | 0A                      | uint8_t    | 0x0A (10)                          | table field `base_type` (Byte)
  +0x2330 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x2334 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2338 | 11 00 00 00             | uint32_t   | 0x00000011 (17)                    | length of string
  +0x233C | 74 65 73 74 68 61 73 68 | char[17]   | testhash                           | string literal
  +0x2344 | 75 36 34 5F 66 6E 76 31 |            | u64_fnv1
  +0x234C | 61                      |            | a
  +0x234D | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x2350 | 38 F8 FF FF             | SOffset32  | 0xFFFFF838 (-1992) Loc: 0x2B18     | offset to vtable
  +0x2354 | 16 00                   | uint16_t   | 0x0016 (22)                        | table field `id` (UShort)
  +0x2356 | 30 00                   | uint16_t   | 0x0030 (48)                        | table field `offset` (UShort)
  +0x2358 | 6C 00 00 00             | UOffset32  | 0x0000006C (108) Loc: 0x23C4       | offset to field `name` (string)
  +0x235C | 58 00 00 00             | UOffset32  | 0x00000058 (88) Loc: 0x23B4        | offset to field `type` (table)
  +0x2360 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2364         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x2364 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x2368 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x238C        | offset to table[0]
  +0x236C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2370         | offset to table[1]

table (reflection.KeyValue):
  +0x2370 | F0 EA FF FF             | SOffset32  | 0xFFFFEAF0 (-5392) Loc: 0x3880     | offset to vtable
  +0x2374 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2384        | offset to field `key` (string)
  +0x2378 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x237C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x237C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2380 | 32 32                   | char[2]    | 22                                 | string literal
  +0x2382 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x2384 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2388 | 69 64                   | char[2]    | id                                 | string literal
  +0x238A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x238C | 0C EB FF FF             | SOffset32  | 0xFFFFEB0C (-5364) Loc: 0x3880     | offset to vtable
  +0x2390 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x23A8        | offset to field `key` (string)
  +0x2394 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2398         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2398 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x239C | 66 6E 76 31 61 5F 36 34 | char[8]    | fnv1a_64                           | string literal
  +0x23A4 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x23A8 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x23AC | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x23B0 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x23B4 | 88 ED FF FF             | SOffset32  | 0xFFFFED88 (-4728) Loc: 0x362C     | offset to vtable
  +0x23B8 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x23BB | 09                      | uint8_t    | 0x09 (9)                           | table field `base_type` (Byte)
  +0x23BC | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x23C0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x23C4 | 11 00 00 00             | uint32_t   | 0x00000011 (17)                    | length of string
  +0x23C8 | 74 65 73 74 68 61 73 68 | char[17]   | testhash                           | string literal
  +0x23D0 | 73 36 34 5F 66 6E 76 31 |            | s64_fnv1
  +0x23D8 | 61                      |            | a
  +0x23D9 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x23DC | C4 F8 FF FF             | SOffset32  | 0xFFFFF8C4 (-1852) Loc: 0x2B18     | offset to vtable
  +0x23E0 | 15 00                   | uint16_t   | 0x0015 (21)                        | table field `id` (UShort)
  +0x23E2 | 2E 00                   | uint16_t   | 0x002E (46)                        | table field `offset` (UShort)
  +0x23E4 | C4 00 00 00             | UOffset32  | 0x000000C4 (196) Loc: 0x24A8       | offset to field `name` (string)
  +0x23E8 | B4 00 00 00             | UOffset32  | 0x000000B4 (180) Loc: 0x249C       | offset to field `type` (table)
  +0x23EC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x23F0         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x23F0 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of vector (# items)
  +0x23F4 | 7C 00 00 00             | UOffset32  | 0x0000007C (124) Loc: 0x2470       | offset to table[0]
  +0x23F8 | 50 00 00 00             | UOffset32  | 0x00000050 (80) Loc: 0x2448        | offset to table[1]
  +0x23FC | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x2420        | offset to table[2]
  +0x2400 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2404         | offset to table[3]

table (reflection.KeyValue):
  +0x2404 | 84 EB FF FF             | SOffset32  | 0xFFFFEB84 (-5244) Loc: 0x3880     | offset to vtable
  +0x2408 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2418        | offset to field `key` (string)
  +0x240C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2410         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2410 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2414 | 32 31                   | char[2]    | 21                                 | string literal
  +0x2416 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x2418 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x241C | 69 64                   | char[2]    | id                                 | string literal
  +0x241E | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x2420 | A0 EB FF FF             | SOffset32  | 0xFFFFEBA0 (-5216) Loc: 0x3880     | offset to vtable
  +0x2424 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x243C        | offset to field `key` (string)
  +0x2428 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x242C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x242C | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x2430 | 66 6E 76 31 61 5F 33 32 | char[8]    | fnv1a_32                           | string literal
  +0x2438 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x243C | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x2440 | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x2444 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x2448 | C8 EB FF FF             | SOffset32  | 0xFFFFEBC8 (-5176) Loc: 0x3880     | offset to vtable
  +0x244C | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x2460        | offset to field `key` (string)
  +0x2450 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2454         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2454 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x2458 | 53 74 61 74             | char[4]    | Stat                               | string literal
  +0x245C | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2460 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x2464 | 63 70 70 5F 74 79 70 65 | char[8]    | cpp_type                           | string literal
  +0x246C | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x2470 | F0 EB FF FF             | SOffset32  | 0xFFFFEBF0 (-5136) Loc: 0x3880     | offset to vtable
  +0x2474 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x2488        | offset to field `key` (string)
  +0x2478 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x247C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x247C | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x2480 | 6E 61 6B 65 64          | char[5]    | naked                              | string literal
  +0x2485 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2488 | 0C 00 00 00             | uint32_t   | 0x0000000C (12)                    | length of string
  +0x248C | 63 70 70 5F 70 74 72 5F | char[12]   | cpp_ptr_                           | string literal
  +0x2494 | 74 79 70 65             |            | type
  +0x2498 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x249C | 08 EC FF FF             | SOffset32  | 0xFFFFEC08 (-5112) Loc: 0x3894     | offset to vtable
  +0x24A0 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x24A3 | 08                      | uint8_t    | 0x08 (8)                           | table field `base_type` (Byte)
  +0x24A4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x24A8 | 11 00 00 00             | uint32_t   | 0x00000011 (17)                    | length of string
  +0x24AC | 74 65 73 74 68 61 73 68 | char[17]   | testhash                           | string literal
  +0x24B4 | 75 33 32 5F 66 6E 76 31 |            | u32_fnv1
  +0x24BC | 61                      |            | a
  +0x24BD | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x24C0 | A8 F9 FF FF             | SOffset32  | 0xFFFFF9A8 (-1624) Loc: 0x2B18     | offset to vtable
  +0x24C4 | 14 00                   | uint16_t   | 0x0014 (20)                        | table field `id` (UShort)
  +0x24C6 | 2C 00                   | uint16_t   | 0x002C (44)                        | table field `offset` (UShort)
  +0x24C8 | 68 00 00 00             | UOffset32  | 0x00000068 (104) Loc: 0x2530       | offset to field `name` (string)
  +0x24CC | 58 00 00 00             | UOffset32  | 0x00000058 (88) Loc: 0x2524        | offset to field `type` (table)
  +0x24D0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x24D4         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x24D4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x24D8 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x24FC        | offset to table[0]
  +0x24DC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x24E0         | offset to table[1]

table (reflection.KeyValue):
  +0x24E0 | 60 EC FF FF             | SOffset32  | 0xFFFFEC60 (-5024) Loc: 0x3880     | offset to vtable
  +0x24E4 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x24F4        | offset to field `key` (string)
  +0x24E8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x24EC         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x24EC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x24F0 | 32 30                   | char[2]    | 20                                 | string literal
  +0x24F2 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x24F4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x24F8 | 69 64                   | char[2]    | id                                 | string literal
  +0x24FA | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x24FC | 7C EC FF FF             | SOffset32  | 0xFFFFEC7C (-4996) Loc: 0x3880     | offset to vtable
  +0x2500 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x2518        | offset to field `key` (string)
  +0x2504 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2508         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2508 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x250C | 66 6E 76 31 61 5F 33 32 | char[8]    | fnv1a_32                           | string literal
  +0x2514 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2518 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x251C | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x2520 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x2524 | 90 EC FF FF             | SOffset32  | 0xFFFFEC90 (-4976) Loc: 0x3894     | offset to vtable
  +0x2528 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x252B | 07                      | uint8_t    | 0x07 (7)                           | table field `base_type` (Byte)
  +0x252C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2530 | 11 00 00 00             | uint32_t   | 0x00000011 (17)                    | length of string
  +0x2534 | 74 65 73 74 68 61 73 68 | char[17]   | testhash                           | string literal
  +0x253C | 73 33 32 5F 66 6E 76 31 |            | s32_fnv1
  +0x2544 | 61                      |            | a
  +0x2545 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x2548 | 30 FA FF FF             | SOffset32  | 0xFFFFFA30 (-1488) Loc: 0x2B18     | offset to vtable
  +0x254C | 13 00                   | uint16_t   | 0x0013 (19)                        | table field `id` (UShort)
  +0x254E | 2A 00                   | uint16_t   | 0x002A (42)                        | table field `offset` (UShort)
  +0x2550 | 68 00 00 00             | UOffset32  | 0x00000068 (104) Loc: 0x25B8       | offset to field `name` (string)
  +0x2554 | 54 00 00 00             | UOffset32  | 0x00000054 (84) Loc: 0x25A8        | offset to field `type` (table)
  +0x2558 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x255C         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x255C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x2560 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x2584        | offset to table[0]
  +0x2564 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2568         | offset to table[1]

table (reflection.KeyValue):
  +0x2568 | E8 EC FF FF             | SOffset32  | 0xFFFFECE8 (-4888) Loc: 0x3880     | offset to vtable
  +0x256C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x257C        | offset to field `key` (string)
  +0x2570 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2574         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2574 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2578 | 31 39                   | char[2]    | 19                                 | string literal
  +0x257A | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x257C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2580 | 69 64                   | char[2]    | id                                 | string literal
  +0x2582 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x2584 | 04 ED FF FF             | SOffset32  | 0xFFFFED04 (-4860) Loc: 0x3880     | offset to vtable
  +0x2588 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x259C        | offset to field `key` (string)
  +0x258C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2590         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2590 | 07 00 00 00             | uint32_t   | 0x00000007 (7)                     | length of string
  +0x2594 | 66 6E 76 31 5F 36 34    | char[7]    | fnv1_64                            | string literal
  +0x259B | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x259C | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x25A0 | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x25A4 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x25A8 | 7C EF FF FF             | SOffset32  | 0xFFFFEF7C (-4228) Loc: 0x362C     | offset to vtable
  +0x25AC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x25AF | 0A                      | uint8_t    | 0x0A (10)                          | table field `base_type` (Byte)
  +0x25B0 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x25B4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x25B8 | 10 00 00 00             | uint32_t   | 0x00000010 (16)                    | length of string
  +0x25BC | 74 65 73 74 68 61 73 68 | char[16]   | testhash                           | string literal
  +0x25C4 | 75 36 34 5F 66 6E 76 31 |            | u64_fnv1
  +0x25CC | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x25D0 | B8 FA FF FF             | SOffset32  | 0xFFFFFAB8 (-1352) Loc: 0x2B18     | offset to vtable
  +0x25D4 | 12 00                   | uint16_t   | 0x0012 (18)                        | table field `id` (UShort)
  +0x25D6 | 28 00                   | uint16_t   | 0x0028 (40)                        | table field `offset` (UShort)
  +0x25D8 | 68 00 00 00             | UOffset32  | 0x00000068 (104) Loc: 0x2640       | offset to field `name` (string)
  +0x25DC | 54 00 00 00             | UOffset32  | 0x00000054 (84) Loc: 0x2630        | offset to field `type` (table)
  +0x25E0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x25E4         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x25E4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x25E8 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x260C        | offset to table[0]
  +0x25EC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x25F0         | offset to table[1]

table (reflection.KeyValue):
  +0x25F0 | 70 ED FF FF             | SOffset32  | 0xFFFFED70 (-4752) Loc: 0x3880     | offset to vtable
  +0x25F4 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2604        | offset to field `key` (string)
  +0x25F8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x25FC         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x25FC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2600 | 31 38                   | char[2]    | 18                                 | string literal
  +0x2602 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x2604 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2608 | 69 64                   | char[2]    | id                                 | string literal
  +0x260A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x260C | 8C ED FF FF             | SOffset32  | 0xFFFFED8C (-4724) Loc: 0x3880     | offset to vtable
  +0x2610 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x2624        | offset to field `key` (string)
  +0x2614 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2618         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2618 | 07 00 00 00             | uint32_t   | 0x00000007 (7)                     | length of string
  +0x261C | 66 6E 76 31 5F 36 34    | char[7]    | fnv1_64                            | string literal
  +0x2623 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x2624 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x2628 | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x262C | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x2630 | 04 F0 FF FF             | SOffset32  | 0xFFFFF004 (-4092) Loc: 0x362C     | offset to vtable
  +0x2634 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2637 | 09                      | uint8_t    | 0x09 (9)                           | table field `base_type` (Byte)
  +0x2638 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x263C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2640 | 10 00 00 00             | uint32_t   | 0x00000010 (16)                    | length of string
  +0x2644 | 74 65 73 74 68 61 73 68 | char[16]   | testhash                           | string literal
  +0x264C | 73 36 34 5F 66 6E 76 31 |            | s64_fnv1
  +0x2654 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x2658 | 40 FB FF FF             | SOffset32  | 0xFFFFFB40 (-1216) Loc: 0x2B18     | offset to vtable
  +0x265C | 11 00                   | uint16_t   | 0x0011 (17)                        | table field `id` (UShort)
  +0x265E | 26 00                   | uint16_t   | 0x0026 (38)                        | table field `offset` (UShort)
  +0x2660 | 64 00 00 00             | UOffset32  | 0x00000064 (100) Loc: 0x26C4       | offset to field `name` (string)
  +0x2664 | 54 00 00 00             | UOffset32  | 0x00000054 (84) Loc: 0x26B8        | offset to field `type` (table)
  +0x2668 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x266C         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x266C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x2670 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x2694        | offset to table[0]
  +0x2674 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2678         | offset to table[1]

table (reflection.KeyValue):
  +0x2678 | F8 ED FF FF             | SOffset32  | 0xFFFFEDF8 (-4616) Loc: 0x3880     | offset to vtable
  +0x267C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x268C        | offset to field `key` (string)
  +0x2680 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2684         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2684 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2688 | 31 37                   | char[2]    | 17                                 | string literal
  +0x268A | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x268C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2690 | 69 64                   | char[2]    | id                                 | string literal
  +0x2692 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x2694 | 14 EE FF FF             | SOffset32  | 0xFFFFEE14 (-4588) Loc: 0x3880     | offset to vtable
  +0x2698 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x26AC        | offset to field `key` (string)
  +0x269C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x26A0         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x26A0 | 07 00 00 00             | uint32_t   | 0x00000007 (7)                     | length of string
  +0x26A4 | 66 6E 76 31 5F 33 32    | char[7]    | fnv1_32                            | string literal
  +0x26AB | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x26AC | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x26B0 | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x26B4 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x26B8 | 24 EE FF FF             | SOffset32  | 0xFFFFEE24 (-4572) Loc: 0x3894     | offset to vtable
  +0x26BC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x26BF | 08                      | uint8_t    | 0x08 (8)                           | table field `base_type` (Byte)
  +0x26C0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x26C4 | 10 00 00 00             | uint32_t   | 0x00000010 (16)                    | length of string
  +0x26C8 | 74 65 73 74 68 61 73 68 | char[16]   | testhash                           | string literal
  +0x26D0 | 75 33 32 5F 66 6E 76 31 |            | u32_fnv1
  +0x26D8 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x26DC | C4 FB FF FF             | SOffset32  | 0xFFFFFBC4 (-1084) Loc: 0x2B18     | offset to vtable
  +0x26E0 | 10 00                   | uint16_t   | 0x0010 (16)                        | table field `id` (UShort)
  +0x26E2 | 24 00                   | uint16_t   | 0x0024 (36)                        | table field `offset` (UShort)
  +0x26E4 | 64 00 00 00             | UOffset32  | 0x00000064 (100) Loc: 0x2748       | offset to field `name` (string)
  +0x26E8 | 54 00 00 00             | UOffset32  | 0x00000054 (84) Loc: 0x273C        | offset to field `type` (table)
  +0x26EC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x26F0         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x26F0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x26F4 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x2718        | offset to table[0]
  +0x26F8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x26FC         | offset to table[1]

table (reflection.KeyValue):
  +0x26FC | 7C EE FF FF             | SOffset32  | 0xFFFFEE7C (-4484) Loc: 0x3880     | offset to vtable
  +0x2700 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2710        | offset to field `key` (string)
  +0x2704 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2708         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2708 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x270C | 31 36                   | char[2]    | 16                                 | string literal
  +0x270E | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x2710 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2714 | 69 64                   | char[2]    | id                                 | string literal
  +0x2716 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x2718 | 98 EE FF FF             | SOffset32  | 0xFFFFEE98 (-4456) Loc: 0x3880     | offset to vtable
  +0x271C | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x2730        | offset to field `key` (string)
  +0x2720 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2724         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2724 | 07 00 00 00             | uint32_t   | 0x00000007 (7)                     | length of string
  +0x2728 | 66 6E 76 31 5F 33 32    | char[7]    | fnv1_32                            | string literal
  +0x272F | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x2730 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x2734 | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x2738 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x273C | A8 EE FF FF             | SOffset32  | 0xFFFFEEA8 (-4440) Loc: 0x3894     | offset to vtable
  +0x2740 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2743 | 07                      | uint8_t    | 0x07 (7)                           | table field `base_type` (Byte)
  +0x2744 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2748 | 10 00 00 00             | uint32_t   | 0x00000010 (16)                    | length of string
  +0x274C | 74 65 73 74 68 61 73 68 | char[16]   | testhash                           | string literal
  +0x2754 | 73 33 32 5F 66 6E 76 31 |            | s32_fnv1
  +0x275C | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x2760 | 48 FC FF FF             | SOffset32  | 0xFFFFFC48 (-952) Loc: 0x2B18      | offset to vtable
  +0x2764 | 0F 00                   | uint16_t   | 0x000F (15)                        | table field `id` (UShort)
  +0x2766 | 22 00                   | uint16_t   | 0x0022 (34)                        | table field `offset` (UShort)
  +0x2768 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x27A8        | offset to field `name` (string)
  +0x276C | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x2798        | offset to field `type` (table)
  +0x2770 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2774         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x2774 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x2778 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x277C         | offset to table[0]

table (reflection.KeyValue):
  +0x277C | FC EE FF FF             | SOffset32  | 0xFFFFEEFC (-4356) Loc: 0x3880     | offset to vtable
  +0x2780 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2790        | offset to field `key` (string)
  +0x2784 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2788         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2788 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x278C | 31 35                   | char[2]    | 15                                 | string literal
  +0x278E | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x2790 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2794 | 69 64                   | char[2]    | id                                 | string literal
  +0x2796 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x2798 | 6C F1 FF FF             | SOffset32  | 0xFFFFF16C (-3732) Loc: 0x362C     | offset to vtable
  +0x279C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x279F | 02                      | uint8_t    | 0x02 (2)                           | table field `base_type` (Byte)
  +0x27A0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x27A4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x27A8 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x27AC | 74 65 73 74 62 6F 6F 6C | char[8]    | testbool                           | string literal
  +0x27B4 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x27B8 | B0 FB FF FF             | SOffset32  | 0xFFFFFBB0 (-1104) Loc: 0x2C08     | offset to vtable
  +0x27BC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x27BF | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x27C0 | 0E 00                   | uint16_t   | 0x000E (14)                        | table field `id` (UShort)
  +0x27C2 | 20 00                   | uint16_t   | 0x0020 (32)                        | table field `offset` (UShort)
  +0x27C4 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x2804        | offset to field `name` (string)
  +0x27C8 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x27F4        | offset to field `type` (table)
  +0x27CC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x27D0         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x27D0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x27D4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x27D8         | offset to table[0]

table (reflection.KeyValue):
  +0x27D8 | 58 EF FF FF             | SOffset32  | 0xFFFFEF58 (-4264) Loc: 0x3880     | offset to vtable
  +0x27DC | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x27EC        | offset to field `key` (string)
  +0x27E0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x27E4         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x27E4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x27E8 | 31 34                   | char[2]    | 14                                 | string literal
  +0x27EA | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x27EC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x27F0 | 69 64                   | char[2]    | id                                 | string literal
  +0x27F2 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x27F4 | 24 F0 FF FF             | SOffset32  | 0xFFFFF024 (-4060) Loc: 0x37D0     | offset to vtable
  +0x27F8 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x27FB | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x27FC | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | table field `index` (Int)
  +0x2800 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2804 | 09 00 00 00             | uint32_t   | 0x00000009 (9)                     | length of string
  +0x2808 | 74 65 73 74 65 6D 70 74 | char[9]    | testempt                           | string literal
  +0x2810 | 79                      |            | y
  +0x2811 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x2814 | 0C FC FF FF             | SOffset32  | 0xFFFFFC0C (-1012) Loc: 0x2C08     | offset to vtable
  +0x2818 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x281B | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x281C | 0D 00                   | uint16_t   | 0x000D (13)                        | table field `id` (UShort)
  +0x281E | 1E 00                   | uint16_t   | 0x001E (30)                        | table field `offset` (UShort)
  +0x2820 | 70 00 00 00             | UOffset32  | 0x00000070 (112) Loc: 0x2890       | offset to field `name` (string)
  +0x2824 | 60 00 00 00             | UOffset32  | 0x00000060 (96) Loc: 0x2884        | offset to field `type` (table)
  +0x2828 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x282C         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x282C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x2830 | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x2868        | offset to table[0]
  +0x2834 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2838         | offset to table[1]

table (reflection.KeyValue):
  +0x2838 | B8 EF FF FF             | SOffset32  | 0xFFFFEFB8 (-4168) Loc: 0x3880     | offset to vtable
  +0x283C | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x2850        | offset to field `key` (string)
  +0x2840 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2844         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2844 | 07 00 00 00             | uint32_t   | 0x00000007 (7)                     | length of string
  +0x2848 | 4D 6F 6E 73 74 65 72    | char[7]    | Monster                            | string literal
  +0x284F | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x2850 | 11 00 00 00             | uint32_t   | 0x00000011 (17)                    | length of string
  +0x2854 | 6E 65 73 74 65 64 5F 66 | char[17]   | nested_f                           | string literal
  +0x285C | 6C 61 74 62 75 66 66 65 |            | latbuffe
  +0x2864 | 72                      |            | r
  +0x2865 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x2868 | E8 EF FF FF             | SOffset32  | 0xFFFFEFE8 (-4120) Loc: 0x3880     | offset to vtable
  +0x286C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x287C        | offset to field `key` (string)
  +0x2870 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2874         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2874 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2878 | 31 33                   | char[2]    | 13                                 | string literal
  +0x287A | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x287C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2880 | 69 64                   | char[2]    | id                                 | string literal
  +0x2882 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x2884 | 24 FC FF FF             | SOffset32  | 0xFFFFFC24 (-988) Loc: 0x2C60      | offset to vtable
  +0x2888 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x288A | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x288B | 04                      | uint8_t    | 0x04 (4)                           | table field `element` (Byte)
  +0x288C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2890 | 14 00 00 00             | uint32_t   | 0x00000014 (20)                    | length of string
  +0x2894 | 74 65 73 74 6E 65 73 74 | char[20]   | testnest                           | string literal
  +0x289C | 65 64 66 6C 61 74 62 75 |            | edflatbu
  +0x28A4 | 66 66 65 72             |            | ffer
  +0x28A8 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x28AC | A4 FC FF FF             | SOffset32  | 0xFFFFFCA4 (-860) Loc: 0x2C08      | offset to vtable
  +0x28B0 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x28B3 | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x28B4 | 0C 00                   | uint16_t   | 0x000C (12)                        | table field `id` (UShort)
  +0x28B6 | 1C 00                   | uint16_t   | 0x001C (28)                        | table field `offset` (UShort)
  +0x28B8 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x28F8        | offset to field `name` (string)
  +0x28BC | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x28E8        | offset to field `type` (table)
  +0x28C0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x28C4         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x28C4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x28C8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x28CC         | offset to table[0]

table (reflection.KeyValue):
  +0x28CC | 4C F0 FF FF             | SOffset32  | 0xFFFFF04C (-4020) Loc: 0x3880     | offset to vtable
  +0x28D0 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x28E0        | offset to field `key` (string)
  +0x28D4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x28D8         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x28D8 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x28DC | 31 32                   | char[2]    | 12                                 | string literal
  +0x28DE | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x28E0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x28E4 | 69 64                   | char[2]    | id                                 | string literal
  +0x28E6 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x28E8 | 18 F1 FF FF             | SOffset32  | 0xFFFFF118 (-3816) Loc: 0x37D0     | offset to vtable
  +0x28EC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x28EF | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x28F0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `index` (Int)
  +0x28F4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x28F8 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x28FC | 65 6E 65 6D 79          | char[5]    | enemy                              | string literal
  +0x2901 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Field):
  +0x2904 | 1C 00                   | uint16_t   | 0x001C (28)                        | size of this vtable
  +0x2906 | 1C 00                   | uint16_t   | 0x001C (28)                        | size of referring table
  +0x2908 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `name` (id: 0)
  +0x290A | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `type` (id: 1)
  +0x290C | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `id` (id: 2)
  +0x290E | 0A 00                   | VOffset16  | 0x000A (10)                        | offset to field `offset` (id: 3)
  +0x2910 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_integer` (id: 4) <defaults to 0> (Long)
  +0x2912 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_real` (id: 5) <defaults to 0.000000> (Double)
  +0x2914 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x2916 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x2918 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `key` (id: 8) <defaults to 0> (Bool)
  +0x291A | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `attributes` (id: 9)
  +0x291C | 18 00                   | VOffset16  | 0x0018 (24)                        | offset to field `documentation` (id: 10)
  +0x291E | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `optional` (id: 11)

table (reflection.Field):
  +0x2920 | 1C 00 00 00             | SOffset32  | 0x0000001C (28) Loc: 0x2904        | offset to vtable
  +0x2924 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2927 | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x2928 | 0B 00                   | uint16_t   | 0x000B (11)                        | table field `id` (UShort)
  +0x292A | 1A 00                   | uint16_t   | 0x001A (26)                        | table field `offset` (UShort)
  +0x292C | B4 00 00 00             | UOffset32  | 0x000000B4 (180) Loc: 0x29E0       | offset to field `name` (string)
  +0x2930 | A0 00 00 00             | UOffset32  | 0x000000A0 (160) Loc: 0x29D0       | offset to field `type` (table)
  +0x2934 | 78 00 00 00             | UOffset32  | 0x00000078 (120) Loc: 0x29AC       | offset to field `attributes` (vector)
  +0x2938 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x293C         | offset to field `documentation` (vector)

vector (reflection.Field.documentation):
  +0x293C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x2940 | 1C 00 00 00             | UOffset32  | 0x0000001C (28) Loc: 0x295C        | offset to string[0]
  +0x2944 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2948         | offset to string[1]

string (reflection.Field.documentation):
  +0x2948 | 0E 00 00 00             | uint32_t   | 0x0000000E (14)                    | length of string
  +0x294C | 20 6D 75 6C 74 69 6C 69 | char[14]   |  multili                           | string literal
  +0x2954 | 6E 65 20 74 6F 6F       |            | ne too
  +0x295A | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.Field.documentation):
  +0x295C | 49 00 00 00             | uint32_t   | 0x00000049 (73)                    | length of string
  +0x2960 | 20 61 6E 20 65 78 61 6D | char[73]   |  an exam                           | string literal
  +0x2968 | 70 6C 65 20 64 6F 63 75 |            | ple docu
  +0x2970 | 6D 65 6E 74 61 74 69 6F |            | mentatio
  +0x2978 | 6E 20 63 6F 6D 6D 65 6E |            | n commen
  +0x2980 | 74 3A 20 74 68 69 73 20 |            | t: this 
  +0x2988 | 77 69 6C 6C 20 65 6E 64 |            | will end
  +0x2990 | 20 75 70 20 69 6E 20 74 |            |  up in t
  +0x2998 | 68 65 20 67 65 6E 65 72 |            | he gener
  +0x29A0 | 61 74 65 64 20 63 6F 64 |            | ated cod
  +0x29A8 | 65                      |            | e
  +0x29A9 | 00                      | char       | 0x00 (0)                           | string terminator

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

vector (reflection.Field.attributes):
  +0x29AC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x29B0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x29B4         | offset to table[0]

table (reflection.KeyValue):
  +0x29B4 | 34 F1 FF FF             | SOffset32  | 0xFFFFF134 (-3788) Loc: 0x3880     | offset to vtable
  +0x29B8 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x29C8        | offset to field `key` (string)
  +0x29BC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x29C0         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x29C0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x29C4 | 31 31                   | char[2]    | 11                                 | string literal
  +0x29C6 | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x29C8 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x29CC | 69 64                   | char[2]    | id                                 | string literal
  +0x29CE | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x29D0 | 3C FF FF FF             | SOffset32  | 0xFFFFFF3C (-196) Loc: 0x2A94      | offset to vtable
  +0x29D4 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x29D6 | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x29D7 | 0F                      | uint8_t    | 0x0F (15)                          | table field `element` (Byte)
  +0x29D8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `index` (Int)
  +0x29DC | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x29E0 | 11 00 00 00             | uint32_t   | 0x00000011 (17)                    | length of string
  +0x29E4 | 74 65 73 74 61 72 72 61 | char[17]   | testarra                           | string literal
  +0x29EC | 79 6F 66 74 61 62 6C 65 |            | yoftable
  +0x29F4 | 73                      |            | s
  +0x29F5 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x29F8 | F0 FD FF FF             | SOffset32  | 0xFFFFFDF0 (-528) Loc: 0x2C08      | offset to vtable
  +0x29FC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x29FF | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x2A00 | 0A 00                   | uint16_t   | 0x000A (10)                        | table field `id` (UShort)
  +0x2A02 | 18 00                   | uint16_t   | 0x0018 (24)                        | table field `offset` (UShort)
  +0x2A04 | 3C 00 00 00             | UOffset32  | 0x0000003C (60) Loc: 0x2A40        | offset to field `name` (string)
  +0x2A08 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x2A34        | offset to field `type` (table)
  +0x2A0C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2A10         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x2A10 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x2A14 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2A18         | offset to table[0]

table (reflection.KeyValue):
  +0x2A18 | 98 F1 FF FF             | SOffset32  | 0xFFFFF198 (-3688) Loc: 0x3880     | offset to vtable
  +0x2A1C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2A2C        | offset to field `key` (string)
  +0x2A20 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2A24         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2A24 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2A28 | 31 30                   | char[2]    | 10                                 | string literal
  +0x2A2A | 00                      | char       | 0x00 (0)                           | string terminator

string (reflection.KeyValue.key):
  +0x2A2C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2A30 | 69 64                   | char[2]    | id                                 | string literal
  +0x2A32 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x2A34 | D4 FD FF FF             | SOffset32  | 0xFFFFFDD4 (-556) Loc: 0x2C60      | offset to vtable
  +0x2A38 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x2A3A | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x2A3B | 0D                      | uint8_t    | 0x0D (13)                          | table field `element` (Byte)
  +0x2A3C | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2A40 | 11 00 00 00             | uint32_t   | 0x00000011 (17)                    | length of string
  +0x2A44 | 74 65 73 74 61 72 72 61 | char[17]   | testarra                           | string literal
  +0x2A4C | 79 6F 66 73 74 72 69 6E |            | yofstrin
  +0x2A54 | 67                      |            | g
  +0x2A55 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x2A58 | 50 FE FF FF             | SOffset32  | 0xFFFFFE50 (-432) Loc: 0x2C08      | offset to vtable
  +0x2A5C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2A5F | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x2A60 | 09 00                   | uint16_t   | 0x0009 (9)                         | table field `id` (UShort)
  +0x2A62 | 16 00                   | uint16_t   | 0x0016 (22)                        | table field `offset` (UShort)
  +0x2A64 | 50 00 00 00             | UOffset32  | 0x00000050 (80) Loc: 0x2AB4        | offset to field `name` (string)
  +0x2A68 | 3C 00 00 00             | UOffset32  | 0x0000003C (60) Loc: 0x2AA4        | offset to field `type` (table)
  +0x2A6C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2A70         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x2A70 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x2A74 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2A78         | offset to table[0]

table (reflection.KeyValue):
  +0x2A78 | F8 F1 FF FF             | SOffset32  | 0xFFFFF1F8 (-3592) Loc: 0x3880     | offset to vtable
  +0x2A7C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2A8C        | offset to field `key` (string)
  +0x2A80 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2A84         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2A84 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2A88 | 39                      | char[1]    | 9                                  | string literal
  +0x2A89 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2A8C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2A90 | 69 64                   | char[2]    | id                                 | string literal
  +0x2A92 | 00                      | char       | 0x00 (0)                           | string terminator

vtable (reflection.Type):
  +0x2A94 | 10 00                   | uint16_t   | 0x0010 (16)                        | size of this vtable
  +0x2A96 | 10 00                   | uint16_t   | 0x0010 (16)                        | size of referring table
  +0x2A98 | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `base_type` (id: 0)
  +0x2A9A | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `element` (id: 1)
  +0x2A9C | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `index` (id: 2)
  +0x2A9E | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `fixed_length` (id: 3) <defaults to 0> (UShort)
  +0x2AA0 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `base_size` (id: 4) <defaults to 4> (UInt)
  +0x2AA2 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `element_size` (id: 5)

table (reflection.Type):
  +0x2AA4 | 10 00 00 00             | SOffset32  | 0x00000010 (16) Loc: 0x2A94        | offset to vtable
  +0x2AA8 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x2AAA | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x2AAB | 0F                      | uint8_t    | 0x0F (15)                          | table field `element` (Byte)
  +0x2AAC | 06 00 00 00             | uint32_t   | 0x00000006 (6)                     | table field `index` (Int)
  +0x2AB0 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2AB4 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x2AB8 | 74 65 73 74 34          | char[5]    | test4                              | string literal
  +0x2ABD | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x2AC0 | B8 FE FF FF             | SOffset32  | 0xFFFFFEB8 (-328) Loc: 0x2C08      | offset to vtable
  +0x2AC4 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2AC7 | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x2AC8 | 08 00                   | uint16_t   | 0x0008 (8)                         | table field `id` (UShort)
  +0x2ACA | 14 00                   | uint16_t   | 0x0014 (20)                        | table field `offset` (UShort)
  +0x2ACC | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x2B0C        | offset to field `name` (string)
  +0x2AD0 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x2AFC        | offset to field `type` (table)
  +0x2AD4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2AD8         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x2AD8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x2ADC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2AE0         | offset to table[0]

table (reflection.KeyValue):
  +0x2AE0 | 60 F2 FF FF             | SOffset32  | 0xFFFFF260 (-3488) Loc: 0x3880     | offset to vtable
  +0x2AE4 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2AF4        | offset to field `key` (string)
  +0x2AE8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2AEC         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2AEC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2AF0 | 38                      | char[1]    | 8                                  | string literal
  +0x2AF1 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2AF4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2AF8 | 69 64                   | char[2]    | id                                 | string literal
  +0x2AFA | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x2AFC | 2C F3 FF FF             | SOffset32  | 0xFFFFF32C (-3284) Loc: 0x37D0     | offset to vtable
  +0x2B00 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2B03 | 10                      | uint8_t    | 0x10 (16)                          | table field `base_type` (Byte)
  +0x2B04 | 00 00 00 00             | uint32_t   | 0x00000000 (0)                     | table field `index` (Int)
  +0x2B08 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2B0C | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x2B10 | 74 65 73 74             | char[4]    | test                               | string literal
  +0x2B14 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Field):
  +0x2B18 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of this vtable
  +0x2B1A | 14 00                   | uint16_t   | 0x0014 (20)                        | size of referring table
  +0x2B1C | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x2B1E | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `type` (id: 1)
  +0x2B20 | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `id` (id: 2)
  +0x2B22 | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `offset` (id: 3)
  +0x2B24 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_integer` (id: 4) <defaults to 0> (Long)
  +0x2B26 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_real` (id: 5) <defaults to 0.000000> (Double)
  +0x2B28 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x2B2A | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x2B2C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `key` (id: 8) <defaults to 0> (Bool)
  +0x2B2E | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `attributes` (id: 9)

table (reflection.Field):
  +0x2B30 | 18 00 00 00             | SOffset32  | 0x00000018 (24) Loc: 0x2B18        | offset to vtable
  +0x2B34 | 07 00                   | uint16_t   | 0x0007 (7)                         | table field `id` (UShort)
  +0x2B36 | 12 00                   | uint16_t   | 0x0012 (18)                        | table field `offset` (UShort)
  +0x2B38 | 44 00 00 00             | UOffset32  | 0x00000044 (68) Loc: 0x2B7C        | offset to field `name` (string)
  +0x2B3C | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x2B68        | offset to field `type` (table)
  +0x2B40 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2B44         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x2B44 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x2B48 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2B4C         | offset to table[0]

table (reflection.KeyValue):
  +0x2B4C | CC F2 FF FF             | SOffset32  | 0xFFFFF2CC (-3380) Loc: 0x3880     | offset to vtable
  +0x2B50 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2B60        | offset to field `key` (string)
  +0x2B54 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2B58         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2B58 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2B5C | 37                      | char[1]    | 7                                  | string literal
  +0x2B5D | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2B60 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2B64 | 69 64                   | char[2]    | id                                 | string literal
  +0x2B66 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x2B68 | 04 F6 FF FF             | SOffset32  | 0xFFFFF604 (-2556) Loc: 0x3564     | offset to vtable
  +0x2B6C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2B6F | 01                      | uint8_t    | 0x01 (1)                           | table field `base_type` (Byte)
  +0x2B70 | 00 00 00 00             | uint32_t   | 0x00000000 (0)                     | table field `index` (Int)
  +0x2B74 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x2B78 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2B7C | 09 00 00 00             | uint32_t   | 0x00000009 (9)                     | length of string
  +0x2B80 | 74 65 73 74 5F 74 79 70 | char[9]    | test_typ                           | string literal
  +0x2B88 | 65                      |            | e
  +0x2B89 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Field):
  +0x2B8C | 18 00                   | uint16_t   | 0x0018 (24)                        | size of this vtable
  +0x2B8E | 20 00                   | uint16_t   | 0x0020 (32)                        | size of referring table
  +0x2B90 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x2B92 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `type` (id: 1)
  +0x2B94 | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `id` (id: 2)
  +0x2B96 | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `offset` (id: 3)
  +0x2B98 | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `default_integer` (id: 4)
  +0x2B9A | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_real` (id: 5) <defaults to 0.000000> (Double)
  +0x2B9C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x2B9E | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x2BA0 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `key` (id: 8) <defaults to 0> (Bool)
  +0x2BA2 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `attributes` (id: 9)

table (reflection.Field):
  +0x2BA4 | 18 00 00 00             | SOffset32  | 0x00000018 (24) Loc: 0x2B8C        | offset to vtable
  +0x2BA8 | 06 00                   | uint16_t   | 0x0006 (6)                         | table field `id` (UShort)
  +0x2BAA | 10 00                   | uint16_t   | 0x0010 (16)                        | table field `offset` (UShort)
  +0x2BAC | 50 00 00 00             | UOffset32  | 0x00000050 (80) Loc: 0x2BFC        | offset to field `name` (string)
  +0x2BB0 | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x2BE8        | offset to field `type` (table)
  +0x2BB4 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2BC4        | offset to field `attributes` (vector)
  +0x2BB8 | 08 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000008 (8)             | table field `default_integer` (Long)
  +0x2BC0 | 00 00 00 00             | uint8_t[4] | ....                               | padding

vector (reflection.Field.attributes):
  +0x2BC4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x2BC8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2BCC         | offset to table[0]

table (reflection.KeyValue):
  +0x2BCC | 4C F3 FF FF             | SOffset32  | 0xFFFFF34C (-3252) Loc: 0x3880     | offset to vtable
  +0x2BD0 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2BE0        | offset to field `key` (string)
  +0x2BD4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2BD8         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2BD8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2BDC | 36                      | char[1]    | 6                                  | string literal
  +0x2BDD | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2BE0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2BE4 | 69 64                   | char[2]    | id                                 | string literal
  +0x2BE6 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x2BE8 | 84 F6 FF FF             | SOffset32  | 0xFFFFF684 (-2428) Loc: 0x3564     | offset to vtable
  +0x2BEC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2BEF | 04                      | uint8_t    | 0x04 (4)                           | table field `base_type` (Byte)
  +0x2BF0 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | table field `index` (Int)
  +0x2BF4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x2BF8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2BFC | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x2C00 | 63 6F 6C 6F 72          | char[5]    | color                              | string literal
  +0x2C05 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Field):
  +0x2C08 | 1C 00                   | uint16_t   | 0x001C (28)                        | size of this vtable
  +0x2C0A | 18 00                   | uint16_t   | 0x0018 (24)                        | size of referring table
  +0x2C0C | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `name` (id: 0)
  +0x2C0E | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `type` (id: 1)
  +0x2C10 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `id` (id: 2)
  +0x2C12 | 0A 00                   | VOffset16  | 0x000A (10)                        | offset to field `offset` (id: 3)
  +0x2C14 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_integer` (id: 4) <defaults to 0> (Long)
  +0x2C16 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_real` (id: 5) <defaults to 0.000000> (Double)
  +0x2C18 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x2C1A | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x2C1C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `key` (id: 8) <defaults to 0> (Bool)
  +0x2C1E | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `attributes` (id: 9)
  +0x2C20 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `documentation` (id: 10) <null> (Vector)
  +0x2C22 | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `optional` (id: 11)

table (reflection.Field):
  +0x2C24 | 1C 00 00 00             | SOffset32  | 0x0000001C (28) Loc: 0x2C08        | offset to vtable
  +0x2C28 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2C2B | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x2C2C | 05 00                   | uint16_t   | 0x0005 (5)                         | table field `id` (UShort)
  +0x2C2E | 0E 00                   | uint16_t   | 0x000E (14)                        | table field `offset` (UShort)
  +0x2C30 | 4C 00 00 00             | UOffset32  | 0x0000004C (76) Loc: 0x2C7C        | offset to field `name` (string)
  +0x2C34 | 3C 00 00 00             | UOffset32  | 0x0000003C (60) Loc: 0x2C70        | offset to field `type` (table)
  +0x2C38 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2C3C         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x2C3C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x2C40 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2C44         | offset to table[0]

table (reflection.KeyValue):
  +0x2C44 | C4 F3 FF FF             | SOffset32  | 0xFFFFF3C4 (-3132) Loc: 0x3880     | offset to vtable
  +0x2C48 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2C58        | offset to field `key` (string)
  +0x2C4C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2C50         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2C50 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2C54 | 35                      | char[1]    | 5                                  | string literal
  +0x2C55 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2C58 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2C5C | 69 64                   | char[2]    | id                                 | string literal
  +0x2C5E | 00                      | char       | 0x00 (0)                           | string terminator

vtable (reflection.Type):
  +0x2C60 | 10 00                   | uint16_t   | 0x0010 (16)                        | size of this vtable
  +0x2C62 | 0C 00                   | uint16_t   | 0x000C (12)                        | size of referring table
  +0x2C64 | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `base_type` (id: 0)
  +0x2C66 | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `element` (id: 1)
  +0x2C68 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `index` (id: 2) <defaults to -1> (Int)
  +0x2C6A | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `fixed_length` (id: 3) <defaults to 0> (UShort)
  +0x2C6C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `base_size` (id: 4) <defaults to 4> (UInt)
  +0x2C6E | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `element_size` (id: 5)

table (reflection.Type):
  +0x2C70 | 10 00 00 00             | SOffset32  | 0x00000010 (16) Loc: 0x2C60        | offset to vtable
  +0x2C74 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x2C76 | 0E                      | uint8_t    | 0x0E (14)                          | table field `base_type` (Byte)
  +0x2C77 | 04                      | uint8_t    | 0x04 (4)                           | table field `element` (Byte)
  +0x2C78 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2C7C | 09 00 00 00             | uint32_t   | 0x00000009 (9)                     | length of string
  +0x2C80 | 69 6E 76 65 6E 74 6F 72 | char[9]    | inventor                           | string literal
  +0x2C88 | 79                      |            | y
  +0x2C89 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Field):
  +0x2C8C | 18 00                   | uint16_t   | 0x0018 (24)                        | size of this vtable
  +0x2C8E | 18 00                   | uint16_t   | 0x0018 (24)                        | size of referring table
  +0x2C90 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `name` (id: 0)
  +0x2C92 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `type` (id: 1)
  +0x2C94 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `id` (id: 2)
  +0x2C96 | 0A 00                   | VOffset16  | 0x000A (10)                        | offset to field `offset` (id: 3)
  +0x2C98 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_integer` (id: 4) <defaults to 0> (Long)
  +0x2C9A | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_real` (id: 5) <defaults to 0.000000> (Double)
  +0x2C9C | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `deprecated` (id: 6)
  +0x2C9E | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x2CA0 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `key` (id: 8) <defaults to 0> (Bool)
  +0x2CA2 | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `attributes` (id: 9)

table (reflection.Field):
  +0x2CA4 | 18 00 00 00             | SOffset32  | 0x00000018 (24) Loc: 0x2C8C        | offset to vtable
  +0x2CA8 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2CAB | 01                      | uint8_t    | 0x01 (1)                           | table field `deprecated` (Bool)
  +0x2CAC | 04 00                   | uint16_t   | 0x0004 (4)                         | table field `id` (UShort)
  +0x2CAE | 0C 00                   | uint16_t   | 0x000C (12)                        | table field `offset` (UShort)
  +0x2CB0 | 90 00 00 00             | UOffset32  | 0x00000090 (144) Loc: 0x2D40       | offset to field `name` (string)
  +0x2CB4 | 7C 00 00 00             | UOffset32  | 0x0000007C (124) Loc: 0x2D30       | offset to field `type` (table)
  +0x2CB8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2CBC         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x2CBC | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of vector (# items)
  +0x2CC0 | 4C 00 00 00             | UOffset32  | 0x0000004C (76) Loc: 0x2D0C        | offset to table[0]
  +0x2CC4 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x2CF0        | offset to table[1]
  +0x2CC8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2CCC         | offset to table[2]

table (reflection.KeyValue):
  +0x2CCC | 4C F4 FF FF             | SOffset32  | 0xFFFFF44C (-2996) Loc: 0x3880     | offset to vtable
  +0x2CD0 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2CE0        | offset to field `key` (string)
  +0x2CD4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2CD8         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2CD8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2CDC | 31                      | char[1]    | 1                                  | string literal
  +0x2CDD | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2CE0 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x2CE4 | 70 72 69 6F 72 69 74 79 | char[8]    | priority                           | string literal
  +0x2CEC | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.KeyValue):
  +0x2CF0 | 70 F4 FF FF             | SOffset32  | 0xFFFFF470 (-2960) Loc: 0x3880     | offset to vtable
  +0x2CF4 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2D04        | offset to field `key` (string)
  +0x2CF8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2CFC         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2CFC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2D00 | 34                      | char[1]    | 4                                  | string literal
  +0x2D01 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2D04 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2D08 | 69 64                   | char[2]    | id                                 | string literal
  +0x2D0A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x2D0C | 8C F4 FF FF             | SOffset32  | 0xFFFFF48C (-2932) Loc: 0x3880     | offset to vtable
  +0x2D10 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2D20        | offset to field `key` (string)
  +0x2D14 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2D18         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2D18 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2D1C | 30                      | char[1]    | 0                                  | string literal
  +0x2D1D | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2D20 | 0A 00 00 00             | uint32_t   | 0x0000000A (10)                    | length of string
  +0x2D24 | 64 65 70 72 65 63 61 74 | char[10]   | deprecat                           | string literal
  +0x2D2C | 65 64                   |            | ed
  +0x2D2E | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x2D30 | 04 F7 FF FF             | SOffset32  | 0xFFFFF704 (-2300) Loc: 0x362C     | offset to vtable
  +0x2D34 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2D37 | 02                      | uint8_t    | 0x02 (2)                           | table field `base_type` (Byte)
  +0x2D38 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x2D3C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2D40 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x2D44 | 66 72 69 65 6E 64 6C 79 | char[8]    | friendly                           | string literal
  +0x2D4C | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Field):
  +0x2D50 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of this vtable
  +0x2D52 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of referring table
  +0x2D54 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `name` (id: 0)
  +0x2D56 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `type` (id: 1)
  +0x2D58 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `id` (id: 2)
  +0x2D5A | 0A 00                   | VOffset16  | 0x000A (10)                        | offset to field `offset` (id: 3)
  +0x2D5C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_integer` (id: 4) <defaults to 0> (Long)
  +0x2D5E | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_real` (id: 5) <defaults to 0.000000> (Double)
  +0x2D60 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x2D62 | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `required` (id: 7)
  +0x2D64 | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `key` (id: 8)
  +0x2D66 | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `attributes` (id: 9)

table (reflection.Field):
  +0x2D68 | 18 00 00 00             | SOffset32  | 0x00000018 (24) Loc: 0x2D50        | offset to vtable
  +0x2D6C | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x2D6E | 01                      | uint8_t    | 0x01 (1)                           | table field `required` (Bool)
  +0x2D6F | 01                      | uint8_t    | 0x01 (1)                           | table field `key` (Bool)
  +0x2D70 | 03 00                   | uint16_t   | 0x0003 (3)                         | table field `id` (UShort)
  +0x2D72 | 0A 00                   | uint16_t   | 0x000A (10)                        | table field `offset` (UShort)
  +0x2D74 | 5C 00 00 00             | UOffset32  | 0x0000005C (92) Loc: 0x2DD0        | offset to field `name` (string)
  +0x2D78 | 4C 00 00 00             | UOffset32  | 0x0000004C (76) Loc: 0x2DC4        | offset to field `type` (table)
  +0x2D7C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2D80         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x2D80 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x2D84 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x2DA8        | offset to table[0]
  +0x2D88 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2D8C         | offset to table[1]

table (reflection.KeyValue):
  +0x2D8C | 0C F5 FF FF             | SOffset32  | 0xFFFFF50C (-2804) Loc: 0x3880     | offset to vtable
  +0x2D90 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2DA0        | offset to field `key` (string)
  +0x2D94 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2D98         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2D98 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2D9C | 30                      | char[1]    | 0                                  | string literal
  +0x2D9D | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2DA0 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x2DA4 | 6B 65 79                | char[3]    | key                                | string literal
  +0x2DA7 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x2DA8 | 28 F5 FF FF             | SOffset32  | 0xFFFFF528 (-2776) Loc: 0x3880     | offset to vtable
  +0x2DAC | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2DBC        | offset to field `key` (string)
  +0x2DB0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2DB4         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2DB4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2DB8 | 33                      | char[1]    | 3                                  | string literal
  +0x2DB9 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2DBC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2DC0 | 69 64                   | char[2]    | id                                 | string literal
  +0x2DC2 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x2DC4 | 30 F5 FF FF             | SOffset32  | 0xFFFFF530 (-2768) Loc: 0x3894     | offset to vtable
  +0x2DC8 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2DCB | 0D                      | uint8_t    | 0x0D (13)                          | table field `base_type` (Byte)
  +0x2DCC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2DD0 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x2DD4 | 6E 61 6D 65             | char[4]    | name                               | string literal
  +0x2DD8 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x2DDC | A8 FF FF FF             | SOffset32  | 0xFFFFFFA8 (-88) Loc: 0x2E34       | offset to vtable
  +0x2DE0 | 02 00                   | uint16_t   | 0x0002 (2)                         | table field `id` (UShort)
  +0x2DE2 | 08 00                   | uint16_t   | 0x0008 (8)                         | table field `offset` (UShort)
  +0x2DE4 | 48 00 00 00             | UOffset32  | 0x00000048 (72) Loc: 0x2E2C        | offset to field `name` (string)
  +0x2DE8 | 34 00 00 00             | UOffset32  | 0x00000034 (52) Loc: 0x2E1C        | offset to field `type` (table)
  +0x2DEC | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x2DF8        | offset to field `attributes` (vector)
  +0x2DF0 | 64 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000064 (100)           | table field `default_integer` (Long)

vector (reflection.Field.attributes):
  +0x2DF8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x2DFC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2E00         | offset to table[0]

table (reflection.KeyValue):
  +0x2E00 | 80 F5 FF FF             | SOffset32  | 0xFFFFF580 (-2688) Loc: 0x3880     | offset to vtable
  +0x2E04 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2E14        | offset to field `key` (string)
  +0x2E08 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2E0C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2E0C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2E10 | 32                      | char[1]    | 2                                  | string literal
  +0x2E11 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2E14 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2E18 | 69 64                   | char[2]    | id                                 | string literal
  +0x2E1A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x2E1C | F0 F7 FF FF             | SOffset32  | 0xFFFFF7F0 (-2064) Loc: 0x362C     | offset to vtable
  +0x2E20 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2E23 | 05                      | uint8_t    | 0x05 (5)                           | table field `base_type` (Byte)
  +0x2E24 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | table field `base_size` (UInt)
  +0x2E28 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2E2C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2E30 | 68 70                   | char[2]    | hp                                 | string literal
  +0x2E32 | 00                      | char       | 0x00 (0)                           | string terminator

vtable (reflection.Field):
  +0x2E34 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of this vtable
  +0x2E36 | 1C 00                   | uint16_t   | 0x001C (28)                        | size of referring table
  +0x2E38 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x2E3A | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `type` (id: 1)
  +0x2E3C | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `id` (id: 2)
  +0x2E3E | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `offset` (id: 3)
  +0x2E40 | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `default_integer` (id: 4)
  +0x2E42 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_real` (id: 5) <defaults to 0.000000> (Double)
  +0x2E44 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x2E46 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x2E48 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `key` (id: 8) <defaults to 0> (Bool)
  +0x2E4A | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `attributes` (id: 9)

table (reflection.Field):
  +0x2E4C | 18 00 00 00             | SOffset32  | 0x00000018 (24) Loc: 0x2E34        | offset to vtable
  +0x2E50 | 01 00                   | uint16_t   | 0x0001 (1)                         | table field `id` (UShort)
  +0x2E52 | 06 00                   | uint16_t   | 0x0006 (6)                         | table field `offset` (UShort)
  +0x2E54 | 48 00 00 00             | UOffset32  | 0x00000048 (72) Loc: 0x2E9C        | offset to field `name` (string)
  +0x2E58 | 34 00 00 00             | UOffset32  | 0x00000034 (52) Loc: 0x2E8C        | offset to field `type` (table)
  +0x2E5C | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x2E68        | offset to field `attributes` (vector)
  +0x2E60 | 96 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000096 (150)           | table field `default_integer` (Long)

vector (reflection.Field.attributes):
  +0x2E68 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x2E6C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2E70         | offset to table[0]

table (reflection.KeyValue):
  +0x2E70 | F0 F5 FF FF             | SOffset32  | 0xFFFFF5F0 (-2576) Loc: 0x3880     | offset to vtable
  +0x2E74 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2E84        | offset to field `key` (string)
  +0x2E78 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2E7C         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2E7C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2E80 | 31                      | char[1]    | 1                                  | string literal
  +0x2E81 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2E84 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2E88 | 69 64                   | char[2]    | id                                 | string literal
  +0x2E8A | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x2E8C | 60 F8 FF FF             | SOffset32  | 0xFFFFF860 (-1952) Loc: 0x362C     | offset to vtable
  +0x2E90 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2E93 | 05                      | uint8_t    | 0x05 (5)                           | table field `base_type` (Byte)
  +0x2E94 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | table field `base_size` (UInt)
  +0x2E98 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2E9C | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x2EA0 | 6D 61 6E 61             | char[4]    | mana                               | string literal
  +0x2EA4 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Field):
  +0x2EA8 | 1C 00                   | uint16_t   | 0x001C (28)                        | size of this vtable
  +0x2EAA | 14 00                   | uint16_t   | 0x0014 (20)                        | size of referring table
  +0x2EAC | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x2EAE | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `type` (id: 1)
  +0x2EB0 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `id` (id: 2) <defaults to 0> (UShort)
  +0x2EB2 | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `offset` (id: 3)
  +0x2EB4 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_integer` (id: 4) <defaults to 0> (Long)
  +0x2EB6 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_real` (id: 5) <defaults to 0.000000> (Double)
  +0x2EB8 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x2EBA | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x2EBC | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `key` (id: 8) <defaults to 0> (Bool)
  +0x2EBE | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `attributes` (id: 9)
  +0x2EC0 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `documentation` (id: 10) <null> (Vector)
  +0x2EC2 | 05 00                   | VOffset16  | 0x0005 (5)                         | offset to field `optional` (id: 11)

table (reflection.Field):
  +0x2EC4 | 1C 00 00 00             | SOffset32  | 0x0000001C (28) Loc: 0x2EA8        | offset to vtable
  +0x2EC8 | 00                      | uint8_t[1] | .                                  | padding
  +0x2EC9 | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x2ECA | 04 00                   | uint16_t   | 0x0004 (4)                         | table field `offset` (UShort)
  +0x2ECC | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x2F0C        | offset to field `name` (string)
  +0x2ED0 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x2EFC        | offset to field `type` (table)
  +0x2ED4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2ED8         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x2ED8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x2EDC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2EE0         | offset to table[0]

table (reflection.KeyValue):
  +0x2EE0 | 60 F6 FF FF             | SOffset32  | 0xFFFFF660 (-2464) Loc: 0x3880     | offset to vtable
  +0x2EE4 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2EF4        | offset to field `key` (string)
  +0x2EE8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2EEC         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2EEC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2EF0 | 30                      | char[1]    | 0                                  | string literal
  +0x2EF1 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2EF4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2EF8 | 69 64                   | char[2]    | id                                 | string literal
  +0x2EFA | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x2EFC | 2C F7 FF FF             | SOffset32  | 0xFFFFF72C (-2260) Loc: 0x37D0     | offset to vtable
  +0x2F00 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2F03 | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x2F04 | 09 00 00 00             | uint32_t   | 0x00000009 (9)                     | table field `index` (Int)
  +0x2F08 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2F0C | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x2F10 | 70 6F 73                | char[3]    | pos                                | string literal
  +0x2F13 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Object):
  +0x2F14 | C4 F7 FF FF             | SOffset32  | 0xFFFFF7C4 (-2108) Loc: 0x3750     | offset to vtable
  +0x2F18 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x2F30        | offset to field `name` (string)
  +0x2F1C | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x2F28        | offset to field `fields` (vector)
  +0x2F20 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `minalign` (Int)
  +0x2F24 | 78 07 00 00             | UOffset32  | 0x00000778 (1912) Loc: 0x369C      | offset to field `declaration_file` (string)

vector (reflection.Object.fields):
  +0x2F28 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x2F2C | 3C 00 00 00             | UOffset32  | 0x0000003C (60) Loc: 0x2F68        | offset to table[0]

string (reflection.Object.name):
  +0x2F30 | 19 00 00 00             | uint32_t   | 0x00000019 (25)                    | length of string
  +0x2F34 | 4D 79 47 61 6D 65 2E 45 | char[25]   | MyGame.E                           | string literal
  +0x2F3C | 78 61 6D 70 6C 65 2E 52 |            | xample.R
  +0x2F44 | 65 66 65 72 72 61 62 6C |            | eferrabl
  +0x2F4C | 65                      |            | e
  +0x2F4D | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Field):
  +0x2F50 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of this vtable
  +0x2F52 | 14 00                   | uint16_t   | 0x0014 (20)                        | size of referring table
  +0x2F54 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x2F56 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `type` (id: 1)
  +0x2F58 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `id` (id: 2) <defaults to 0> (UShort)
  +0x2F5A | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `offset` (id: 3)
  +0x2F5C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_integer` (id: 4) <defaults to 0> (Long)
  +0x2F5E | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_real` (id: 5) <defaults to 0.000000> (Double)
  +0x2F60 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x2F62 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x2F64 | 05 00                   | VOffset16  | 0x0005 (5)                         | offset to field `key` (id: 8)
  +0x2F66 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `attributes` (id: 9)

table (reflection.Field):
  +0x2F68 | 18 00 00 00             | SOffset32  | 0x00000018 (24) Loc: 0x2F50        | offset to vtable
  +0x2F6C | 00                      | uint8_t[1] | .                                  | padding
  +0x2F6D | 01                      | uint8_t    | 0x01 (1)                           | table field `key` (Bool)
  +0x2F6E | 04 00                   | uint16_t   | 0x0004 (4)                         | table field `offset` (UShort)
  +0x2F70 | 6C 00 00 00             | UOffset32  | 0x0000006C (108) Loc: 0x2FDC       | offset to field `name` (string)
  +0x2F74 | 58 00 00 00             | UOffset32  | 0x00000058 (88) Loc: 0x2FCC        | offset to field `type` (table)
  +0x2F78 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2F7C         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x2F7C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x2F80 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x2FA4        | offset to table[0]
  +0x2F84 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2F88         | offset to table[1]

table (reflection.KeyValue):
  +0x2F88 | 08 F7 FF FF             | SOffset32  | 0xFFFFF708 (-2296) Loc: 0x3880     | offset to vtable
  +0x2F8C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x2F9C        | offset to field `key` (string)
  +0x2F90 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2F94         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2F94 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x2F98 | 30                      | char[1]    | 0                                  | string literal
  +0x2F99 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2F9C | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x2FA0 | 6B 65 79                | char[3]    | key                                | string literal
  +0x2FA3 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x2FA4 | 24 F7 FF FF             | SOffset32  | 0xFFFFF724 (-2268) Loc: 0x3880     | offset to vtable
  +0x2FA8 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x2FC0        | offset to field `key` (string)
  +0x2FAC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x2FB0         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x2FB0 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x2FB4 | 66 6E 76 31 61 5F 36 34 | char[8]    | fnv1a_64                           | string literal
  +0x2FBC | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x2FC0 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | length of string
  +0x2FC4 | 68 61 73 68             | char[4]    | hash                               | string literal
  +0x2FC8 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Type):
  +0x2FCC | A0 F9 FF FF             | SOffset32  | 0xFFFFF9A0 (-1632) Loc: 0x362C     | offset to vtable
  +0x2FD0 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x2FD3 | 0A                      | uint8_t    | 0x0A (10)                          | table field `base_type` (Byte)
  +0x2FD4 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x2FD8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x2FDC | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x2FE0 | 69 64                   | char[2]    | id                                 | string literal
  +0x2FE2 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Object):
  +0x2FE4 | 94 F8 FF FF             | SOffset32  | 0xFFFFF894 (-1900) Loc: 0x3750     | offset to vtable
  +0x2FE8 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x3008        | offset to field `name` (string)
  +0x2FEC | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x2FF8        | offset to field `fields` (vector)
  +0x2FF0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `minalign` (Int)
  +0x2FF4 | A8 06 00 00             | UOffset32  | 0x000006A8 (1704) Loc: 0x369C      | offset to field `declaration_file` (string)

vector (reflection.Object.fields):
  +0x2FF8 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of vector (# items)
  +0x2FFC | 3C 00 00 00             | UOffset32  | 0x0000003C (60) Loc: 0x3038        | offset to table[0]
  +0x3000 | B8 00 00 00             | UOffset32  | 0x000000B8 (184) Loc: 0x30B8       | offset to table[1]
  +0x3004 | 8C 00 00 00             | UOffset32  | 0x0000008C (140) Loc: 0x3090       | offset to table[2]

string (reflection.Object.name):
  +0x3008 | 13 00 00 00             | uint32_t   | 0x00000013 (19)                    | length of string
  +0x300C | 4D 79 47 61 6D 65 2E 45 | char[19]   | MyGame.E                           | string literal
  +0x3014 | 78 61 6D 70 6C 65 2E 53 |            | xample.S
  +0x301C | 74 61 74                |            | tat
  +0x301F | 00                      | char       | 0x00 (0)                           | string terminator

vtable (reflection.Field):
  +0x3020 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of this vtable
  +0x3022 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of referring table
  +0x3024 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `name` (id: 0)
  +0x3026 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `type` (id: 1)
  +0x3028 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `id` (id: 2)
  +0x302A | 0A 00                   | VOffset16  | 0x000A (10)                        | offset to field `offset` (id: 3)
  +0x302C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_integer` (id: 4) <defaults to 0> (Long)
  +0x302E | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_real` (id: 5) <defaults to 0.000000> (Double)
  +0x3030 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x3032 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x3034 | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `key` (id: 8)
  +0x3036 | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `attributes` (id: 9)

table (reflection.Field):
  +0x3038 | 18 00 00 00             | SOffset32  | 0x00000018 (24) Loc: 0x3020        | offset to vtable
  +0x303C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x303F | 01                      | uint8_t    | 0x01 (1)                           | table field `key` (Bool)
  +0x3040 | 02 00                   | uint16_t   | 0x0002 (2)                         | table field `id` (UShort)
  +0x3042 | 08 00                   | uint16_t   | 0x0008 (8)                         | table field `offset` (UShort)
  +0x3044 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x3084        | offset to field `name` (string)
  +0x3048 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x3074        | offset to field `type` (table)
  +0x304C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x3050         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x3050 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x3054 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x3058         | offset to table[0]

table (reflection.KeyValue):
  +0x3058 | D8 F7 FF FF             | SOffset32  | 0xFFFFF7D8 (-2088) Loc: 0x3880     | offset to vtable
  +0x305C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x306C        | offset to field `key` (string)
  +0x3060 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x3064         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x3064 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x3068 | 30                      | char[1]    | 0                                  | string literal
  +0x3069 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x306C | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x3070 | 6B 65 79                | char[3]    | key                                | string literal
  +0x3073 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x3074 | 48 FA FF FF             | SOffset32  | 0xFFFFFA48 (-1464) Loc: 0x362C     | offset to vtable
  +0x3078 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x307B | 06                      | uint8_t    | 0x06 (6)                           | table field `base_type` (Byte)
  +0x307C | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | table field `base_size` (UInt)
  +0x3080 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x3084 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x3088 | 63 6F 75 6E 74          | char[5]    | count                              | string literal
  +0x308D | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x3090 | 5C FC FF FF             | SOffset32  | 0xFFFFFC5C (-932) Loc: 0x3434      | offset to vtable
  +0x3094 | 01 00                   | uint16_t   | 0x0001 (1)                         | table field `id` (UShort)
  +0x3096 | 06 00                   | uint16_t   | 0x0006 (6)                         | table field `offset` (UShort)
  +0x3098 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x30B0        | offset to field `name` (string)
  +0x309C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x30A0         | offset to field `type` (table)

table (reflection.Type):
  +0x30A0 | 74 FA FF FF             | SOffset32  | 0xFFFFFA74 (-1420) Loc: 0x362C     | offset to vtable
  +0x30A4 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x30A7 | 09                      | uint8_t    | 0x09 (9)                           | table field `base_type` (Byte)
  +0x30A8 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x30AC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x30B0 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x30B4 | 76 61 6C                | char[3]    | val                                | string literal
  +0x30B7 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x30B8 | 14 F9 FF FF             | SOffset32  | 0xFFFFF914 (-1772) Loc: 0x37A4     | offset to vtable
  +0x30BC | 00                      | uint8_t[1] | .                                  | padding
  +0x30BD | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x30BE | 04 00                   | uint16_t   | 0x0004 (4)                         | table field `offset` (UShort)
  +0x30C0 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x30D4        | offset to field `name` (string)
  +0x30C4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x30C8         | offset to field `type` (table)

table (reflection.Type):
  +0x30C8 | 34 F8 FF FF             | SOffset32  | 0xFFFFF834 (-1996) Loc: 0x3894     | offset to vtable
  +0x30CC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x30CF | 0D                      | uint8_t    | 0x0D (13)                          | table field `base_type` (Byte)
  +0x30D0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x30D4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x30D8 | 69 64                   | char[2]    | id                                 | string literal
  +0x30DA | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Object):
  +0x30DC | E4 F8 FF FF             | SOffset32  | 0xFFFFF8E4 (-1820) Loc: 0x37F8     | offset to vtable
  +0x30E0 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x30E3 | 01                      | uint8_t    | 0x01 (1)                           | table field `is_struct` (Bool)
  +0x30E4 | 1C 00 00 00             | UOffset32  | 0x0000001C (28) Loc: 0x3100        | offset to field `name` (string)
  +0x30E8 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x30F8        | offset to field `fields` (vector)
  +0x30EC | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `minalign` (Int)
  +0x30F0 | 14 00 00 00             | uint32_t   | 0x00000014 (20)                    | table field `bytesize` (Int)
  +0x30F4 | A8 05 00 00             | UOffset32  | 0x000005A8 (1448) Loc: 0x369C      | offset to field `declaration_file` (string)

vector (reflection.Object.fields):
  +0x30F8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x30FC | 30 00 00 00             | UOffset32  | 0x00000030 (48) Loc: 0x312C        | offset to table[0]

string (reflection.Object.name):
  +0x3100 | 27 00 00 00             | uint32_t   | 0x00000027 (39)                    | length of string
  +0x3104 | 4D 79 47 61 6D 65 2E 45 | char[39]   | MyGame.E                           | string literal
  +0x310C | 78 61 6D 70 6C 65 2E 53 |            | xample.S
  +0x3114 | 74 72 75 63 74 4F 66 53 |            | tructOfS
  +0x311C | 74 72 75 63 74 73 4F 66 |            | tructsOf
  +0x3124 | 53 74 72 75 63 74 73    |            | Structs
  +0x312B | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x312C | AC F8 FF FF             | SOffset32  | 0xFFFFF8AC (-1876) Loc: 0x3880     | offset to vtable
  +0x3130 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x3148        | offset to field `name` (string)
  +0x3134 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x3138         | offset to field `type` (table)

table (reflection.Type):
  +0x3138 | 68 F9 FF FF             | SOffset32  | 0xFFFFF968 (-1688) Loc: 0x37D0     | offset to vtable
  +0x313C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x313F | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x3140 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `index` (Int)
  +0x3144 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x3148 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x314C | 61                      | char[1]    | a                                  | string literal
  +0x314D | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Object):
  +0x3150 | 58 F9 FF FF             | SOffset32  | 0xFFFFF958 (-1704) Loc: 0x37F8     | offset to vtable
  +0x3154 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x3157 | 01                      | uint8_t    | 0x01 (1)                           | table field `is_struct` (Bool)
  +0x3158 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x317C        | offset to field `name` (string)
  +0x315C | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x316C        | offset to field `fields` (vector)
  +0x3160 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `minalign` (Int)
  +0x3164 | 14 00 00 00             | uint32_t   | 0x00000014 (20)                    | table field `bytesize` (Int)
  +0x3168 | 34 05 00 00             | UOffset32  | 0x00000534 (1332) Loc: 0x369C      | offset to field `declaration_file` (string)

vector (reflection.Object.fields):
  +0x316C | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of vector (# items)
  +0x3170 | 80 00 00 00             | UOffset32  | 0x00000080 (128) Loc: 0x31F0       | offset to table[0]
  +0x3174 | 54 00 00 00             | UOffset32  | 0x00000054 (84) Loc: 0x31C8        | offset to table[1]
  +0x3178 | 28 00 00 00             | UOffset32  | 0x00000028 (40) Loc: 0x31A0        | offset to table[2]

string (reflection.Object.name):
  +0x317C | 1E 00 00 00             | uint32_t   | 0x0000001E (30)                    | length of string
  +0x3180 | 4D 79 47 61 6D 65 2E 45 | char[30]   | MyGame.E                           | string literal
  +0x3188 | 78 61 6D 70 6C 65 2E 53 |            | xample.S
  +0x3190 | 74 72 75 63 74 4F 66 53 |            | tructOfS
  +0x3198 | 74 72 75 63 74 73       |            | tructs
  +0x319E | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x31A0 | 6C FD FF FF             | SOffset32  | 0xFFFFFD6C (-660) Loc: 0x3434      | offset to vtable
  +0x31A4 | 02 00                   | uint16_t   | 0x0002 (2)                         | table field `id` (UShort)
  +0x31A6 | 0C 00                   | uint16_t   | 0x000C (12)                        | table field `offset` (UShort)
  +0x31A8 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x31C0        | offset to field `name` (string)
  +0x31AC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x31B0         | offset to field `type` (table)

table (reflection.Type):
  +0x31B0 | E0 F9 FF FF             | SOffset32  | 0xFFFFF9E0 (-1568) Loc: 0x37D0     | offset to vtable
  +0x31B4 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x31B7 | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x31B8 | 00 00 00 00             | uint32_t   | 0x00000000 (0)                     | table field `index` (Int)
  +0x31BC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x31C0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x31C4 | 63                      | char[1]    | c                                  | string literal
  +0x31C5 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x31C8 | 94 FD FF FF             | SOffset32  | 0xFFFFFD94 (-620) Loc: 0x3434      | offset to vtable
  +0x31CC | 01 00                   | uint16_t   | 0x0001 (1)                         | table field `id` (UShort)
  +0x31CE | 08 00                   | uint16_t   | 0x0008 (8)                         | table field `offset` (UShort)
  +0x31D0 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x31E8        | offset to field `name` (string)
  +0x31D4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x31D8         | offset to field `type` (table)

table (reflection.Type):
  +0x31D8 | 08 FA FF FF             | SOffset32  | 0xFFFFFA08 (-1528) Loc: 0x37D0     | offset to vtable
  +0x31DC | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x31DF | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x31E0 | 06 00 00 00             | uint32_t   | 0x00000006 (6)                     | table field `index` (Int)
  +0x31E4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x31E8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x31EC | 62                      | char[1]    | b                                  | string literal
  +0x31ED | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x31F0 | 70 F9 FF FF             | SOffset32  | 0xFFFFF970 (-1680) Loc: 0x3880     | offset to vtable
  +0x31F4 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x320C        | offset to field `name` (string)
  +0x31F8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x31FC         | offset to field `type` (table)

table (reflection.Type):
  +0x31FC | 2C FA FF FF             | SOffset32  | 0xFFFFFA2C (-1492) Loc: 0x37D0     | offset to vtable
  +0x3200 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x3203 | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x3204 | 00 00 00 00             | uint32_t   | 0x00000000 (0)                     | table field `index` (Int)
  +0x3208 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x320C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x3210 | 61                      | char[1]    | a                                  | string literal
  +0x3211 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Object):
  +0x3214 | 1C FA FF FF             | SOffset32  | 0xFFFFFA1C (-1508) Loc: 0x37F8     | offset to vtable
  +0x3218 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x321B | 01                      | uint8_t    | 0x01 (1)                           | table field `is_struct` (Bool)
  +0x321C | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x323C        | offset to field `name` (string)
  +0x3220 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x3230        | offset to field `fields` (vector)
  +0x3224 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `minalign` (Int)
  +0x3228 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `bytesize` (Int)
  +0x322C | 70 04 00 00             | UOffset32  | 0x00000470 (1136) Loc: 0x369C      | offset to field `declaration_file` (string)

vector (reflection.Object.fields):
  +0x3230 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x3234 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x3258        | offset to table[0]
  +0x3238 | 64 00 00 00             | UOffset32  | 0x00000064 (100) Loc: 0x329C       | offset to table[1]

string (reflection.Object.name):
  +0x323C | 16 00 00 00             | uint32_t   | 0x00000016 (22)                    | length of string
  +0x3240 | 4D 79 47 61 6D 65 2E 45 | char[22]   | MyGame.E                           | string literal
  +0x3248 | 78 61 6D 70 6C 65 2E 41 |            | xample.A
  +0x3250 | 62 69 6C 69 74 79       |            | bility
  +0x3256 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x3258 | 24 FE FF FF             | SOffset32  | 0xFFFFFE24 (-476) Loc: 0x3434      | offset to vtable
  +0x325C | 01 00                   | uint16_t   | 0x0001 (1)                         | table field `id` (UShort)
  +0x325E | 04 00                   | uint16_t   | 0x0004 (4)                         | table field `offset` (UShort)
  +0x3260 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x3274        | offset to field `name` (string)
  +0x3264 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x3268         | offset to field `type` (table)

table (reflection.Type):
  +0x3268 | D4 F9 FF FF             | SOffset32  | 0xFFFFF9D4 (-1580) Loc: 0x3894     | offset to vtable
  +0x326C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x326F | 08                      | uint8_t    | 0x08 (8)                           | table field `base_type` (Byte)
  +0x3270 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x3274 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | length of string
  +0x3278 | 64 69 73 74 61 6E 63 65 | char[8]    | distance                           | string literal
  +0x3280 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Field):
  +0x3284 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of this vtable
  +0x3286 | 14 00                   | uint16_t   | 0x0014 (20)                        | size of referring table
  +0x3288 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x328A | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `type` (id: 1)
  +0x328C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `id` (id: 2) <defaults to 0> (UShort)
  +0x328E | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `offset` (id: 3) <defaults to 0> (UShort)
  +0x3290 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_integer` (id: 4) <defaults to 0> (Long)
  +0x3292 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_real` (id: 5) <defaults to 0.000000> (Double)
  +0x3294 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x3296 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x3298 | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `key` (id: 8)
  +0x329A | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `attributes` (id: 9)

table (reflection.Field):
  +0x329C | 18 00 00 00             | SOffset32  | 0x00000018 (24) Loc: 0x3284        | offset to vtable
  +0x32A0 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x32A3 | 01                      | uint8_t    | 0x01 (1)                           | table field `key` (Bool)
  +0x32A4 | 3C 00 00 00             | UOffset32  | 0x0000003C (60) Loc: 0x32E0        | offset to field `name` (string)
  +0x32A8 | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x32D4        | offset to field `type` (table)
  +0x32AC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x32B0         | offset to field `attributes` (vector)

vector (reflection.Field.attributes):
  +0x32B0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x32B4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x32B8         | offset to table[0]

table (reflection.KeyValue):
  +0x32B8 | 38 FA FF FF             | SOffset32  | 0xFFFFFA38 (-1480) Loc: 0x3880     | offset to vtable
  +0x32BC | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x32CC        | offset to field `key` (string)
  +0x32C0 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x32C4         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x32C4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x32C8 | 30                      | char[1]    | 0                                  | string literal
  +0x32C9 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x32CC | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | length of string
  +0x32D0 | 6B 65 79                | char[3]    | key                                | string literal
  +0x32D3 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Type):
  +0x32D4 | 40 FA FF FF             | SOffset32  | 0xFFFFFA40 (-1472) Loc: 0x3894     | offset to vtable
  +0x32D8 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x32DB | 08                      | uint8_t    | 0x08 (8)                           | table field `base_type` (Byte)
  +0x32DC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x32E0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of string
  +0x32E4 | 69 64                   | char[2]    | id                                 | string literal
  +0x32E6 | 00                      | char       | 0x00 (0)                           | string terminator

vtable (reflection.Object):
  +0x32E8 | 14 00                   | uint16_t   | 0x0014 (20)                        | size of this vtable
  +0x32EA | 20 00                   | uint16_t   | 0x0020 (32)                        | size of referring table
  +0x32EC | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x32EE | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `fields` (id: 1)
  +0x32F0 | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `is_struct` (id: 2)
  +0x32F2 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `minalign` (id: 3)
  +0x32F4 | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `bytesize` (id: 4)
  +0x32F6 | 18 00                   | VOffset16  | 0x0018 (24)                        | offset to field `attributes` (id: 5)
  +0x32F8 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `documentation` (id: 6) <null> (Vector)
  +0x32FA | 1C 00                   | VOffset16  | 0x001C (28)                        | offset to field `declaration_file` (id: 7)

table (reflection.Object):
  +0x32FC | 14 00 00 00             | SOffset32  | 0x00000014 (20) Loc: 0x32E8        | offset to vtable
  +0x3300 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x3303 | 01                      | uint8_t    | 0x01 (1)                           | table field `is_struct` (Bool)
  +0x3304 | 60 00 00 00             | UOffset32  | 0x00000060 (96) Loc: 0x3364        | offset to field `name` (string)
  +0x3308 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x3348        | offset to field `fields` (vector)
  +0x330C | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `minalign` (Int)
  +0x3310 | 20 00 00 00             | uint32_t   | 0x00000020 (32)                    | table field `bytesize` (Int)
  +0x3314 | 08 00 00 00             | UOffset32  | 0x00000008 (8) Loc: 0x331C         | offset to field `attributes` (vector)
  +0x3318 | 84 03 00 00             | UOffset32  | 0x00000384 (900) Loc: 0x369C       | offset to field `declaration_file` (string)

vector (reflection.Object.attributes):
  +0x331C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x3320 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x3324         | offset to table[0]

table (reflection.KeyValue):
  +0x3324 | A4 FA FF FF             | SOffset32  | 0xFFFFFAA4 (-1372) Loc: 0x3880     | offset to vtable
  +0x3328 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x3338        | offset to field `key` (string)
  +0x332C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x3330         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x3330 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x3334 | 38                      | char[1]    | 8                                  | string literal
  +0x3335 | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x3338 | 0B 00 00 00             | uint32_t   | 0x0000000B (11)                    | length of string
  +0x333C | 66 6F 72 63 65 5F 61 6C | char[11]   | force_al                           | string literal
  +0x3344 | 69 67 6E                |            | ign
  +0x3347 | 00                      | char       | 0x00 (0)                           | string terminator

vector (reflection.Object.fields):
  +0x3348 | 06 00 00 00             | uint32_t   | 0x00000006 (6)                     | length of vector (# items)
  +0x334C | 94 00 00 00             | UOffset32  | 0x00000094 (148) Loc: 0x33E0       | offset to table[0]
  +0x3350 | 5C 00 00 00             | UOffset32  | 0x0000005C (92) Loc: 0x33AC        | offset to table[1]
  +0x3354 | 28 00 00 00             | UOffset32  | 0x00000028 (40) Loc: 0x337C        | offset to table[2]
  +0x3358 | 0C 01 00 00             | UOffset32  | 0x0000010C (268) Loc: 0x3464       | offset to table[3]
  +0x335C | E4 00 00 00             | UOffset32  | 0x000000E4 (228) Loc: 0x3440       | offset to table[4]
  +0x3360 | AC 00 00 00             | UOffset32  | 0x000000AC (172) Loc: 0x340C       | offset to table[5]

string (reflection.Object.name):
  +0x3364 | 13 00 00 00             | uint32_t   | 0x00000013 (19)                    | length of string
  +0x3368 | 4D 79 47 61 6D 65 2E 45 | char[19]   | MyGame.E                           | string literal
  +0x3370 | 78 61 6D 70 6C 65 2E 56 |            | xample.V
  +0x3378 | 65 63 33                |            | ec3
  +0x337B | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x337C | A6 FD FF FF             | SOffset32  | 0xFFFFFDA6 (-602) Loc: 0x35D6      | offset to vtable
  +0x3380 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x3382 | 05 00                   | uint16_t   | 0x0005 (5)                         | table field `id` (UShort)
  +0x3384 | 1A 00                   | uint16_t   | 0x001A (26)                        | table field `offset` (UShort)
  +0x3386 | 02 00                   | uint16_t   | 0x0002 (2)                         | table field `padding` (UShort)
  +0x3388 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x33A0        | offset to field `name` (string)
  +0x338C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x3390         | offset to field `type` (table)

table (reflection.Type):
  +0x3390 | C0 FB FF FF             | SOffset32  | 0xFFFFFBC0 (-1088) Loc: 0x37D0     | offset to vtable
  +0x3394 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x3397 | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x3398 | 06 00 00 00             | uint32_t   | 0x00000006 (6)                     | table field `index` (Int)
  +0x339C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x33A0 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x33A4 | 74 65 73 74 33          | char[5]    | test3                              | string literal
  +0x33A9 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x33AC | D6 FD FF FF             | SOffset32  | 0xFFFFFDD6 (-554) Loc: 0x35D6      | offset to vtable
  +0x33B0 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x33B2 | 04 00                   | uint16_t   | 0x0004 (4)                         | table field `id` (UShort)
  +0x33B4 | 18 00                   | uint16_t   | 0x0018 (24)                        | table field `offset` (UShort)
  +0x33B6 | 01 00                   | uint16_t   | 0x0001 (1)                         | table field `padding` (UShort)
  +0x33B8 | 1C 00 00 00             | UOffset32  | 0x0000001C (28) Loc: 0x33D4        | offset to field `name` (string)
  +0x33BC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x33C0         | offset to field `type` (table)

table (reflection.Type):
  +0x33C0 | 5C FE FF FF             | SOffset32  | 0xFFFFFE5C (-420) Loc: 0x3564      | offset to vtable
  +0x33C4 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x33C7 | 04                      | uint8_t    | 0x04 (4)                           | table field `base_type` (Byte)
  +0x33C8 | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | table field `index` (Int)
  +0x33CC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x33D0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x33D4 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x33D8 | 74 65 73 74 32          | char[5]    | test2                              | string literal
  +0x33DD | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x33E0 | AC FF FF FF             | SOffset32  | 0xFFFFFFAC (-84) Loc: 0x3434       | offset to vtable
  +0x33E4 | 03 00                   | uint16_t   | 0x0003 (3)                         | table field `id` (UShort)
  +0x33E6 | 10 00                   | uint16_t   | 0x0010 (16)                        | table field `offset` (UShort)
  +0x33E8 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x3400        | offset to field `name` (string)
  +0x33EC | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x33F0         | offset to field `type` (table)

table (reflection.Type):
  +0x33F0 | C4 FD FF FF             | SOffset32  | 0xFFFFFDC4 (-572) Loc: 0x362C      | offset to vtable
  +0x33F4 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x33F7 | 0C                      | uint8_t    | 0x0C (12)                          | table field `base_type` (Byte)
  +0x33F8 | 08 00 00 00             | uint32_t   | 0x00000008 (8)                     | table field `base_size` (UInt)
  +0x33FC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x3400 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x3404 | 74 65 73 74 31          | char[5]    | test1                              | string literal
  +0x3409 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x340C | 36 FE FF FF             | SOffset32  | 0xFFFFFE36 (-458) Loc: 0x35D6      | offset to vtable
  +0x3410 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x3412 | 02 00                   | uint16_t   | 0x0002 (2)                         | table field `id` (UShort)
  +0x3414 | 08 00                   | uint16_t   | 0x0008 (8)                         | table field `offset` (UShort)
  +0x3416 | 04 00                   | uint16_t   | 0x0004 (4)                         | table field `padding` (UShort)
  +0x3418 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x342C        | offset to field `name` (string)
  +0x341C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x3420         | offset to field `type` (table)

table (reflection.Type):
  +0x3420 | 8C FB FF FF             | SOffset32  | 0xFFFFFB8C (-1140) Loc: 0x3894     | offset to vtable
  +0x3424 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x3427 | 0B                      | uint8_t    | 0x0B (11)                          | table field `base_type` (Byte)
  +0x3428 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x342C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x3430 | 7A                      | char[1]    | z                                  | string literal
  +0x3431 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Field):
  +0x3434 | 0C 00                   | uint16_t   | 0x000C (12)                        | size of this vtable
  +0x3436 | 10 00                   | uint16_t   | 0x0010 (16)                        | size of referring table
  +0x3438 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x343A | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `type` (id: 1)
  +0x343C | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `id` (id: 2)
  +0x343E | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `offset` (id: 3)

table (reflection.Field):
  +0x3440 | 0C 00 00 00             | SOffset32  | 0x0000000C (12) Loc: 0x3434        | offset to vtable
  +0x3444 | 01 00                   | uint16_t   | 0x0001 (1)                         | table field `id` (UShort)
  +0x3446 | 04 00                   | uint16_t   | 0x0004 (4)                         | table field `offset` (UShort)
  +0x3448 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x345C        | offset to field `name` (string)
  +0x344C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x3450         | offset to field `type` (table)

table (reflection.Type):
  +0x3450 | BC FB FF FF             | SOffset32  | 0xFFFFFBBC (-1092) Loc: 0x3894     | offset to vtable
  +0x3454 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x3457 | 0B                      | uint8_t    | 0x0B (11)                          | table field `base_type` (Byte)
  +0x3458 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x345C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x3460 | 79                      | char[1]    | y                                  | string literal
  +0x3461 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x3464 | E4 FB FF FF             | SOffset32  | 0xFFFFFBE4 (-1052) Loc: 0x3880     | offset to vtable
  +0x3468 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x347C        | offset to field `name` (string)
  +0x346C | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x3470         | offset to field `type` (table)

table (reflection.Type):
  +0x3470 | DC FB FF FF             | SOffset32  | 0xFFFFFBDC (-1060) Loc: 0x3894     | offset to vtable
  +0x3474 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x3477 | 0B                      | uint8_t    | 0x0B (11)                          | table field `base_type` (Byte)
  +0x3478 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x347C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x3480 | 78                      | char[1]    | x                                  | string literal
  +0x3481 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Object):
  +0x3484 | 14 00                   | uint16_t   | 0x0014 (20)                        | size of this vtable
  +0x3486 | 18 00                   | uint16_t   | 0x0018 (24)                        | size of referring table
  +0x3488 | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `name` (id: 0)
  +0x348A | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `fields` (id: 1)
  +0x348C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `is_struct` (id: 2) <defaults to 0> (Bool)
  +0x348E | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `minalign` (id: 3)
  +0x3490 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `bytesize` (id: 4) <defaults to 0> (Int)
  +0x3492 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `attributes` (id: 5)
  +0x3494 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `documentation` (id: 6) <null> (Vector)
  +0x3496 | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `declaration_file` (id: 7)

table (reflection.Object):
  +0x3498 | 14 00 00 00             | SOffset32  | 0x00000014 (20) Loc: 0x3484        | offset to vtable
  +0x349C | 70 00 00 00             | UOffset32  | 0x00000070 (112) Loc: 0x350C       | offset to field `name` (string)
  +0x34A0 | 64 00 00 00             | UOffset32  | 0x00000064 (100) Loc: 0x3504       | offset to field `fields` (vector)
  +0x34A4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `minalign` (Int)
  +0x34A8 | 08 00 00 00             | UOffset32  | 0x00000008 (8) Loc: 0x34B0         | offset to field `attributes` (vector)
  +0x34AC | F0 01 00 00             | UOffset32  | 0x000001F0 (496) Loc: 0x369C       | offset to field `declaration_file` (string)

vector (reflection.Object.attributes):
  +0x34B0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x34B4 | 28 00 00 00             | UOffset32  | 0x00000028 (40) Loc: 0x34DC        | offset to table[0]
  +0x34B8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x34BC         | offset to table[1]

table (reflection.KeyValue):
  +0x34BC | 3C FC FF FF             | SOffset32  | 0xFFFFFC3C (-964) Loc: 0x3880      | offset to vtable
  +0x34C0 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x34D0        | offset to field `key` (string)
  +0x34C4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x34C8         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x34C8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x34CC | 30                      | char[1]    | 0                                  | string literal
  +0x34CD | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x34D0 | 07 00 00 00             | uint32_t   | 0x00000007 (7)                     | length of string
  +0x34D4 | 70 72 69 76 61 74 65    | char[7]    | private                            | string literal
  +0x34DB | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.KeyValue):
  +0x34DC | 5C FC FF FF             | SOffset32  | 0xFFFFFC5C (-932) Loc: 0x3880      | offset to vtable
  +0x34E0 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x34F0        | offset to field `key` (string)
  +0x34E4 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x34E8         | offset to field `value` (string)

string (reflection.KeyValue.value):
  +0x34E8 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x34EC | 30                      | char[1]    | 0                                  | string literal
  +0x34ED | 00                      | char       | 0x00 (0)                           | string terminator

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

string (reflection.KeyValue.key):
  +0x34F0 | 0E 00 00 00             | uint32_t   | 0x0000000E (14)                    | length of string
  +0x34F4 | 63 73 68 61 72 70 5F 70 | char[14]   | csharp_p                           | string literal
  +0x34FC | 61 72 74 69 61 6C       |            | artial
  +0x3502 | 00                      | char       | 0x00 (0)                           | string terminator

vector (reflection.Object.fields):
  +0x3504 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x3508 | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x3548        | offset to table[0]

string (reflection.Object.name):
  +0x350C | 26 00 00 00             | uint32_t   | 0x00000026 (38)                    | length of string
  +0x3510 | 4D 79 47 61 6D 65 2E 45 | char[38]   | MyGame.E                           | string literal
  +0x3518 | 78 61 6D 70 6C 65 2E 54 |            | xample.T
  +0x3520 | 65 73 74 53 69 6D 70 6C |            | estSimpl
  +0x3528 | 65 54 61 62 6C 65 57 69 |            | eTableWi
  +0x3530 | 74 68 45 6E 75 6D       |            | thEnum
  +0x3536 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Field):
  +0x353A | 0E 00                   | uint16_t   | 0x000E (14)                        | size of this vtable
  +0x353C | 1C 00                   | uint16_t   | 0x001C (28)                        | size of referring table
  +0x353E | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x3540 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `type` (id: 1)
  +0x3542 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `id` (id: 2) <defaults to 0> (UShort)
  +0x3544 | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `offset` (id: 3)
  +0x3546 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `default_integer` (id: 4)

table (reflection.Field):
  +0x3548 | 0E 00 00 00             | SOffset32  | 0x0000000E (14) Loc: 0x353A        | offset to vtable
  +0x354C | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x354E | 04 00                   | uint16_t   | 0x0004 (4)                         | table field `offset` (UShort)
  +0x3550 | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x3588        | offset to field `name` (string)
  +0x3554 | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x3574        | offset to field `type` (table)
  +0x3558 | 02 00 00 00 00 00 00 00 | int64_t    | 0x0000000000000002 (2)             | table field `default_integer` (Long)
  +0x3560 | 00 00 00 00             | uint8_t[4] | ....                               | padding

vtable (reflection.Type):
  +0x3564 | 10 00                   | uint16_t   | 0x0010 (16)                        | size of this vtable
  +0x3566 | 14 00                   | uint16_t   | 0x0014 (20)                        | size of referring table
  +0x3568 | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `base_type` (id: 0)
  +0x356A | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `element` (id: 1) <defaults to 0> (Byte)
  +0x356C | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `index` (id: 2)
  +0x356E | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `fixed_length` (id: 3) <defaults to 0> (UShort)
  +0x3570 | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `base_size` (id: 4)
  +0x3572 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `element_size` (id: 5)

table (reflection.Type):
  +0x3574 | 10 00 00 00             | SOffset32  | 0x00000010 (16) Loc: 0x3564        | offset to vtable
  +0x3578 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x357B | 04                      | uint8_t    | 0x04 (4)                           | table field `base_type` (Byte)
  +0x357C | 03 00 00 00             | uint32_t   | 0x00000003 (3)                     | table field `index` (Int)
  +0x3580 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x3584 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x3588 | 05 00 00 00             | uint32_t   | 0x00000005 (5)                     | length of string
  +0x358C | 63 6F 6C 6F 72          | char[5]    | color                              | string literal
  +0x3591 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Object):
  +0x3594 | 9C FD FF FF             | SOffset32  | 0xFFFFFD9C (-612) Loc: 0x37F8      | offset to vtable
  +0x3598 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x359B | 01                      | uint8_t    | 0x01 (1)                           | table field `is_struct` (Bool)
  +0x359C | 20 00 00 00             | UOffset32  | 0x00000020 (32) Loc: 0x35BC        | offset to field `name` (string)
  +0x35A0 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x35B0        | offset to field `fields` (vector)
  +0x35A4 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | table field `minalign` (Int)
  +0x35A8 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `bytesize` (Int)
  +0x35AC | F0 00 00 00             | UOffset32  | 0x000000F0 (240) Loc: 0x369C       | offset to field `declaration_file` (string)

vector (reflection.Object.fields):
  +0x35B0 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | length of vector (# items)
  +0x35B4 | 6C 00 00 00             | UOffset32  | 0x0000006C (108) Loc: 0x3620       | offset to table[0]
  +0x35B8 | 3C 00 00 00             | UOffset32  | 0x0000003C (60) Loc: 0x35F4        | offset to table[1]

string (reflection.Object.name):
  +0x35BC | 13 00 00 00             | uint32_t   | 0x00000013 (19)                    | length of string
  +0x35C0 | 4D 79 47 61 6D 65 2E 45 | char[19]   | MyGame.E                           | string literal
  +0x35C8 | 78 61 6D 70 6C 65 2E 54 |            | xample.T
  +0x35D0 | 65 73 74                |            | est
  +0x35D3 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Field):
  +0x35D6 | 1E 00                   | uint16_t   | 0x001E (30)                        | size of this vtable
  +0x35D8 | 14 00                   | uint16_t   | 0x0014 (20)                        | size of referring table
  +0x35DA | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `name` (id: 0)
  +0x35DC | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `type` (id: 1)
  +0x35DE | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `id` (id: 2)
  +0x35E0 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `offset` (id: 3)
  +0x35E2 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_integer` (id: 4) <defaults to 0> (Long)
  +0x35E4 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_real` (id: 5) <defaults to 0.000000> (Double)
  +0x35E6 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x35E8 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x35EA | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `key` (id: 8) <defaults to 0> (Bool)
  +0x35EC | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `attributes` (id: 9) <null> (Vector)
  +0x35EE | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `documentation` (id: 10) <null> (Vector)
  +0x35F0 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `optional` (id: 11) <defaults to 0> (Bool)
  +0x35F2 | 0A 00                   | VOffset16  | 0x000A (10)                        | offset to field `padding` (id: 12)

table (reflection.Field):
  +0x35F4 | 1E 00 00 00             | SOffset32  | 0x0000001E (30) Loc: 0x35D6        | offset to vtable
  +0x35F8 | 00 00                   | uint8_t[2] | ..                                 | padding
  +0x35FA | 01 00                   | uint16_t   | 0x0001 (1)                         | table field `id` (UShort)
  +0x35FC | 02 00                   | uint16_t   | 0x0002 (2)                         | table field `offset` (UShort)
  +0x35FE | 01 00                   | uint16_t   | 0x0001 (1)                         | table field `padding` (UShort)
  +0x3600 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x3618        | offset to field `name` (string)
  +0x3604 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x3608         | offset to field `type` (table)

table (reflection.Type):
  +0x3608 | DC FF FF FF             | SOffset32  | 0xFFFFFFDC (-36) Loc: 0x362C       | offset to vtable
  +0x360C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x360F | 03                      | uint8_t    | 0x03 (3)                           | table field `base_type` (Byte)
  +0x3610 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `base_size` (UInt)
  +0x3614 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x3618 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x361C | 62                      | char[1]    | b                                  | string literal
  +0x361D | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Field):
  +0x3620 | A0 FD FF FF             | SOffset32  | 0xFFFFFDA0 (-608) Loc: 0x3880      | offset to vtable
  +0x3624 | 28 00 00 00             | UOffset32  | 0x00000028 (40) Loc: 0x364C        | offset to field `name` (string)
  +0x3628 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x363C        | offset to field `type` (table)

vtable (reflection.Type):
  +0x362C | 10 00                   | uint16_t   | 0x0010 (16)                        | size of this vtable
  +0x362E | 10 00                   | uint16_t   | 0x0010 (16)                        | size of referring table
  +0x3630 | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `base_type` (id: 0)
  +0x3632 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `element` (id: 1) <defaults to 0> (Byte)
  +0x3634 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `index` (id: 2) <defaults to -1> (Int)
  +0x3636 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `fixed_length` (id: 3) <defaults to 0> (UShort)
  +0x3638 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `base_size` (id: 4)
  +0x363A | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `element_size` (id: 5)

table (reflection.Type):
  +0x363C | 10 00 00 00             | SOffset32  | 0x00000010 (16) Loc: 0x362C        | offset to vtable
  +0x3640 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x3643 | 05                      | uint8_t    | 0x05 (5)                           | table field `base_type` (Byte)
  +0x3644 | 02 00 00 00             | uint32_t   | 0x00000002 (2)                     | table field `base_size` (UInt)
  +0x3648 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x364C | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x3650 | 61                      | char[1]    | a                                  | string literal
  +0x3651 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Object):
  +0x3654 | 04 FF FF FF             | SOffset32  | 0xFFFFFF04 (-252) Loc: 0x3750      | offset to vtable
  +0x3658 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x366C        | offset to field `name` (string)
  +0x365C | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x3668        | offset to field `fields` (vector)
  +0x3660 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `minalign` (Int)
  +0x3664 | 38 00 00 00             | UOffset32  | 0x00000038 (56) Loc: 0x369C        | offset to field `declaration_file` (string)

vector (reflection.Object.fields):
  +0x3668 | 00 00 00 00             | uint32_t   | 0x00000000 (0)                     | length of vector (# items)

string (reflection.Object.name):
  +0x366C | 17 00 00 00             | uint32_t   | 0x00000017 (23)                    | length of string
  +0x3670 | 4D 79 47 61 6D 65 2E 45 | char[23]   | MyGame.E                           | string literal
  +0x3678 | 78 61 6D 70 6C 65 32 2E |            | xample2.
  +0x3680 | 4D 6F 6E 73 74 65 72    |            | Monster
  +0x3687 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Object):
  +0x3688 | 38 FF FF FF             | SOffset32  | 0xFFFFFF38 (-200) Loc: 0x3750      | offset to vtable
  +0x368C | 2C 00 00 00             | UOffset32  | 0x0000002C (44) Loc: 0x36B8        | offset to field `name` (string)
  +0x3690 | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x36B4        | offset to field `fields` (vector)
  +0x3694 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `minalign` (Int)
  +0x3698 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x369C         | offset to field `declaration_file` (string)

string (reflection.Object.declaration_file):
  +0x369C | 12 00 00 00             | uint32_t   | 0x00000012 (18)                    | length of string
  +0x36A0 | 2F 2F 6D 6F 6E 73 74 65 | char[18]   | //monste                           | string literal
  +0x36A8 | 72 5F 74 65 73 74 2E 66 |            | r_test.f
  +0x36B0 | 62 73                   |            | bs
  +0x36B2 | 00                      | char       | 0x00 (0)                           | string terminator

vector (reflection.Object.fields):
  +0x36B4 | 00 00 00 00             | uint32_t   | 0x00000000 (0)                     | length of vector (# items)

string (reflection.Object.name):
  +0x36B8 | 18 00 00 00             | uint32_t   | 0x00000018 (24)                    | length of string
  +0x36BC | 4D 79 47 61 6D 65 2E 49 | char[24]   | MyGame.I                           | string literal
  +0x36C4 | 6E 50 61 72 65 6E 74 4E |            | nParentN
  +0x36CC | 61 6D 65 73 70 61 63 65 |            | amespace
  +0x36D4 | 00                      | char       | 0x00 (0)                           | string terminator

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

table (reflection.Object):
  +0x36D8 | 88 FF FF FF             | SOffset32  | 0xFFFFFF88 (-120) Loc: 0x3750      | offset to vtable
  +0x36DC | 40 00 00 00             | UOffset32  | 0x00000040 (64) Loc: 0x371C        | offset to field `name` (string)
  +0x36E0 | 34 00 00 00             | UOffset32  | 0x00000034 (52) Loc: 0x3714        | offset to field `fields` (vector)
  +0x36E4 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `minalign` (Int)
  +0x36E8 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x36EC         | offset to field `declaration_file` (string)

string (reflection.Object.declaration_file):
  +0x36EC | 20 00 00 00             | uint32_t   | 0x00000020 (32)                    | length of string
  +0x36F0 | 2F 2F 69 6E 63 6C 75 64 | char[32]   | //includ                           | string literal
  +0x36F8 | 65 5F 74 65 73 74 2F 69 |            | e_test/i
  +0x3700 | 6E 63 6C 75 64 65 5F 74 |            | nclude_t
  +0x3708 | 65 73 74 31 2E 66 62 73 |            | est1.fbs
  +0x3710 | 00                      | char       | 0x00 (0)                           | string terminator

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

vector (reflection.Object.fields):
  +0x3714 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x3718 | 10 00 00 00             | UOffset32  | 0x00000010 (16) Loc: 0x3728        | offset to table[0]

string (reflection.Object.name):
  +0x371C | 06 00 00 00             | uint32_t   | 0x00000006 (6)                     | length of string
  +0x3720 | 54 61 62 6C 65 41       | char[6]    | TableA                             | string literal
  +0x3726 | 00                      | char       | 0x00 (0)                           | string terminator

table (reflection.Field):
  +0x3728 | 84 FF FF FF             | SOffset32  | 0xFFFFFF84 (-124) Loc: 0x37A4      | offset to vtable
  +0x372C | 00                      | uint8_t[1] | .                                  | padding
  +0x372D | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x372E | 04 00                   | uint16_t   | 0x0004 (4)                         | table field `offset` (UShort)
  +0x3730 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x3748        | offset to field `name` (string)
  +0x3734 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x3738         | offset to field `type` (table)

table (reflection.Type):
  +0x3738 | 68 FF FF FF             | SOffset32  | 0xFFFFFF68 (-152) Loc: 0x37D0      | offset to vtable
  +0x373C | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x373F | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x3740 | 0C 00 00 00             | uint32_t   | 0x0000000C (12)                    | table field `index` (Int)
  +0x3744 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x3748 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x374C | 62                      | char[1]    | b                                  | string literal
  +0x374D | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Object):
  +0x3750 | 14 00                   | uint16_t   | 0x0014 (20)                        | size of this vtable
  +0x3752 | 14 00                   | uint16_t   | 0x0014 (20)                        | size of referring table
  +0x3754 | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `name` (id: 0)
  +0x3756 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `fields` (id: 1)
  +0x3758 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `is_struct` (id: 2) <defaults to 0> (Bool)
  +0x375A | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `minalign` (id: 3)
  +0x375C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `bytesize` (id: 4) <defaults to 0> (Int)
  +0x375E | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `attributes` (id: 5) <null> (Vector)
  +0x3760 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `documentation` (id: 6) <null> (Vector)
  +0x3762 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `declaration_file` (id: 7)

table (reflection.Object):
  +0x3764 | 14 00 00 00             | SOffset32  | 0x00000014 (20) Loc: 0x3750        | offset to vtable
  +0x3768 | 18 00 00 00             | UOffset32  | 0x00000018 (24) Loc: 0x3780        | offset to field `name` (string)
  +0x376C | 0C 00 00 00             | UOffset32  | 0x0000000C (12) Loc: 0x3778        | offset to field `fields` (vector)
  +0x3770 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `minalign` (Int)
  +0x3774 | B4 00 00 00             | UOffset32  | 0x000000B4 (180) Loc: 0x3828       | offset to field `declaration_file` (string)

vector (reflection.Object.fields):
  +0x3778 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x377C | 44 00 00 00             | UOffset32  | 0x00000044 (68) Loc: 0x37C0        | offset to table[0]

string (reflection.Object.name):
  +0x3780 | 1C 00 00 00             | uint32_t   | 0x0000001C (28)                    | length of string
  +0x3784 | 4D 79 47 61 6D 65 2E 4F | char[28]   | MyGame.O                           | string literal
  +0x378C | 74 68 65 72 4E 61 6D 65 |            | therName
  +0x3794 | 53 70 61 63 65 2E 54 61 |            | Space.Ta
  +0x379C | 62 6C 65 42             |            | bleB
  +0x37A0 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Field):
  +0x37A4 | 1C 00                   | uint16_t   | 0x001C (28)                        | size of this vtable
  +0x37A6 | 10 00                   | uint16_t   | 0x0010 (16)                        | size of referring table
  +0x37A8 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x37AA | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `type` (id: 1)
  +0x37AC | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `id` (id: 2) <defaults to 0> (UShort)
  +0x37AE | 06 00                   | VOffset16  | 0x0006 (6)                         | offset to field `offset` (id: 3)
  +0x37B0 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_integer` (id: 4) <defaults to 0> (Long)
  +0x37B2 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `default_real` (id: 5) <defaults to 0.000000> (Double)
  +0x37B4 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `deprecated` (id: 6) <defaults to 0> (Bool)
  +0x37B6 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `required` (id: 7) <defaults to 0> (Bool)
  +0x37B8 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `key` (id: 8) <defaults to 0> (Bool)
  +0x37BA | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `attributes` (id: 9) <null> (Vector)
  +0x37BC | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `documentation` (id: 10) <null> (Vector)
  +0x37BE | 05 00                   | VOffset16  | 0x0005 (5)                         | offset to field `optional` (id: 11)

table (reflection.Field):
  +0x37C0 | 1C 00 00 00             | SOffset32  | 0x0000001C (28) Loc: 0x37A4        | offset to vtable
  +0x37C4 | 00                      | uint8_t[1] | .                                  | padding
  +0x37C5 | 01                      | uint8_t    | 0x01 (1)                           | table field `optional` (Bool)
  +0x37C6 | 04 00                   | uint16_t   | 0x0004 (4)                         | table field `offset` (UShort)
  +0x37C8 | 28 00 00 00             | UOffset32  | 0x00000028 (40) Loc: 0x37F0        | offset to field `name` (string)
  +0x37CC | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x37E0        | offset to field `type` (table)

vtable (reflection.Type):
  +0x37D0 | 10 00                   | uint16_t   | 0x0010 (16)                        | size of this vtable
  +0x37D2 | 10 00                   | uint16_t   | 0x0010 (16)                        | size of referring table
  +0x37D4 | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `base_type` (id: 0)
  +0x37D6 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `element` (id: 1) <defaults to 0> (Byte)
  +0x37D8 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `index` (id: 2)
  +0x37DA | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `fixed_length` (id: 3) <defaults to 0> (UShort)
  +0x37DC | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `base_size` (id: 4) <defaults to 4> (UInt)
  +0x37DE | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `element_size` (id: 5)

table (reflection.Type):
  +0x37E0 | 10 00 00 00             | SOffset32  | 0x00000010 (16) Loc: 0x37D0        | offset to vtable
  +0x37E4 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x37E7 | 0F                      | uint8_t    | 0x0F (15)                          | table field `base_type` (Byte)
  +0x37E8 | 0E 00 00 00             | uint32_t   | 0x0000000E (14)                    | table field `index` (Int)
  +0x37EC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x37F0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x37F4 | 61                      | char[1]    | a                                  | string literal
  +0x37F5 | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.Object):
  +0x37F8 | 14 00                   | uint16_t   | 0x0014 (20)                        | size of this vtable
  +0x37FA | 1C 00                   | uint16_t   | 0x001C (28)                        | size of referring table
  +0x37FC | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `name` (id: 0)
  +0x37FE | 0C 00                   | VOffset16  | 0x000C (12)                        | offset to field `fields` (id: 1)
  +0x3800 | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `is_struct` (id: 2)
  +0x3802 | 10 00                   | VOffset16  | 0x0010 (16)                        | offset to field `minalign` (id: 3)
  +0x3804 | 14 00                   | VOffset16  | 0x0014 (20)                        | offset to field `bytesize` (id: 4)
  +0x3806 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `attributes` (id: 5) <null> (Vector)
  +0x3808 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `documentation` (id: 6) <null> (Vector)
  +0x380A | 18 00                   | VOffset16  | 0x0018 (24)                        | offset to field `declaration_file` (id: 7)

table (reflection.Object):
  +0x380C | 14 00 00 00             | SOffset32  | 0x00000014 (20) Loc: 0x37F8        | offset to vtable
  +0x3810 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x3813 | 01                      | uint8_t    | 0x01 (1)                           | table field `is_struct` (Bool)
  +0x3814 | 48 00 00 00             | UOffset32  | 0x00000048 (72) Loc: 0x385C        | offset to field `name` (string)
  +0x3818 | 3C 00 00 00             | UOffset32  | 0x0000003C (60) Loc: 0x3854        | offset to field `fields` (vector)
  +0x381C | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `minalign` (Int)
  +0x3820 | 04 00 00 00             | uint32_t   | 0x00000004 (4)                     | table field `bytesize` (Int)
  +0x3824 | 04 00 00 00             | UOffset32  | 0x00000004 (4) Loc: 0x3828         | offset to field `declaration_file` (string)

string (reflection.Object.declaration_file):
  +0x3828 | 24 00 00 00             | uint32_t   | 0x00000024 (36)                    | length of string
  +0x382C | 2F 2F 69 6E 63 6C 75 64 | char[36]   | //includ                           | string literal
  +0x3834 | 65 5F 74 65 73 74 2F 73 |            | e_test/s
  +0x383C | 75 62 2F 69 6E 63 6C 75 |            | ub/inclu
  +0x3844 | 64 65 5F 74 65 73 74 32 |            | de_test2
  +0x384C | 2E 66 62 73             |            | .fbs
  +0x3850 | 00                      | char       | 0x00 (0)                           | string terminator

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

vector (reflection.Object.fields):
  +0x3854 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of vector (# items)
  +0x3858 | 30 00 00 00             | UOffset32  | 0x00000030 (48) Loc: 0x3888        | offset to table[0]

string (reflection.Object.name):
  +0x385C | 1C 00 00 00             | uint32_t   | 0x0000001C (28)                    | length of string
  +0x3860 | 4D 79 47 61 6D 65 2E 4F | char[28]   | MyGame.O                           | string literal
  +0x3868 | 74 68 65 72 4E 61 6D 65 |            | therName
  +0x3870 | 53 70 61 63 65 2E 55 6E |            | Space.Un
  +0x3878 | 75 73 65 64             |            | used
  +0x387C | 00                      | char       | 0x00 (0)                           | string terminator

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

vtable (reflection.KeyValue, reflection.Field, reflection.SchemaFile):
  +0x3880 | 08 00                   | uint16_t   | 0x0008 (8)                         | size of this vtable
  +0x3882 | 0C 00                   | uint16_t   | 0x000C (12)                        | size of referring table
  +0x3884 | 04 00                   | VOffset16  | 0x0004 (4)                         | offset to field `key` (id: 0)
  +0x3886 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `value` (id: 1)

table (reflection.Field):
  +0x3888 | 08 00 00 00             | SOffset32  | 0x00000008 (8) Loc: 0x3880         | offset to vtable
  +0x388C | 24 00 00 00             | UOffset32  | 0x00000024 (36) Loc: 0x38B0        | offset to field `name` (string)
  +0x3890 | 14 00 00 00             | UOffset32  | 0x00000014 (20) Loc: 0x38A4        | offset to field `type` (table)

vtable (reflection.Type):
  +0x3894 | 10 00                   | uint16_t   | 0x0010 (16)                        | size of this vtable
  +0x3896 | 0C 00                   | uint16_t   | 0x000C (12)                        | size of referring table
  +0x3898 | 07 00                   | VOffset16  | 0x0007 (7)                         | offset to field `base_type` (id: 0)
  +0x389A | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `element` (id: 1) <defaults to 0> (Byte)
  +0x389C | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `index` (id: 2) <defaults to -1> (Int)
  +0x389E | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `fixed_length` (id: 3) <defaults to 0> (UShort)
  +0x38A0 | 00 00                   | VOffset16  | 0x0000 (0)                         | offset to field `base_size` (id: 4) <defaults to 4> (UInt)
  +0x38A2 | 08 00                   | VOffset16  | 0x0008 (8)                         | offset to field `element_size` (id: 5)

table (reflection.Type):
  +0x38A4 | 10 00 00 00             | SOffset32  | 0x00000010 (16) Loc: 0x3894        | offset to vtable
  +0x38A8 | 00 00 00                | uint8_t[3] | ...                                | padding
  +0x38AB | 07                      | uint8_t    | 0x07 (7)                           | table field `base_type` (Byte)
  +0x38AC | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | table field `element_size` (UInt)

string (reflection.Field.name):
  +0x38B0 | 01 00 00 00             | uint32_t   | 0x00000001 (1)                     | length of string
  +0x38B4 | 61                      | char[1]    | a                                  | string literal
  +0x38B5 | 00                      | char       | 0x00 (0)                           | string terminator

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