{
  "schemaVersion": 1,
  "contractRevision": 2,
  "profile": "Portable",
  "unnamedPadding": "Fixed non-composite storage named _ has no caller value and is written as zero bytes, including into existing buffers. Enum storage uses numeric zero; pointers to non-composite types use the null address. Composite targets, including pointers to them, and runtime-sized padding are rejected. Fixed-size custom-codec padding uses its declared size without invoking its value encoder. Write budgets and array limits still apply; read array-element limits also apply when optimized reads skip constructing padding values. Struct results and union views omit unnamed padding; debug ranges and raw union storage can retain it. Implicit alignment gaps are distinct and remain unchanged in existing storage.",
  "expressionDomain": "Ordinary layout expressions use checked signed Int32 arithmetic. A decoded integer outside that range remains valid field data; selecting it in a direct, conditional, or short-circuit expression reports the field name and value. Unselected operands are not evaluated.",
  "directiveWhitespace": ".NET whitespace except carriage return and line feed; directive names must remain on the same physical line. A backslash followed by LF or CRLF continues a definition body on the next physical line, including text bodies that start with an integer token.",
  "shippedProfiles": [
    "Portable"
  ],
  "fixedPrimitives": [
    {
      "spelling": "fixed16_16",
      "canonical": "fixed16_16",
      "bytes": 4,
      "alignment": 4,
      "signedness": "fixed-point",
      "endian": "layout",
      "clr": "Double",
      "writerDomain": "exact signed 32-bit integer divided by 2^16; no rounding"
    },
    {
      "spelling": "fixed16_16<",
      "canonical": "fixed16_16<",
      "bytes": 4,
      "alignment": 4,
      "signedness": "fixed-point",
      "endian": "little",
      "clr": "Double",
      "writerDomain": "exact signed 32-bit integer divided by 2^16; no rounding"
    },
    {
      "spelling": "fixed16_16>",
      "canonical": "fixed16_16>",
      "bytes": 4,
      "alignment": 4,
      "signedness": "fixed-point",
      "endian": "big",
      "clr": "Double",
      "writerDomain": "exact signed 32-bit integer divided by 2^16; no rounding"
    },
    {
      "spelling": "ufixed16_16",
      "canonical": "ufixed16_16",
      "bytes": 4,
      "alignment": 4,
      "signedness": "fixed-point",
      "endian": "layout",
      "clr": "Double",
      "writerDomain": "exact unsigned 32-bit integer divided by 2^16; no rounding"
    },
    {
      "spelling": "ufixed16_16<",
      "canonical": "ufixed16_16<",
      "bytes": 4,
      "alignment": 4,
      "signedness": "fixed-point",
      "endian": "little",
      "clr": "Double",
      "writerDomain": "exact unsigned 32-bit integer divided by 2^16; no rounding"
    },
    {
      "spelling": "ufixed16_16>",
      "canonical": "ufixed16_16>",
      "bytes": 4,
      "alignment": 4,
      "signedness": "fixed-point",
      "endian": "big",
      "clr": "Double",
      "writerDomain": "exact unsigned 32-bit integer divided by 2^16; no rounding"
    },
    {
      "spelling": "fixed2_30",
      "canonical": "fixed2_30",
      "bytes": 4,
      "alignment": 4,
      "signedness": "fixed-point",
      "endian": "layout",
      "clr": "Double",
      "writerDomain": "exact signed 32-bit integer divided by 2^30; no rounding"
    },
    {
      "spelling": "fixed2_30<",
      "canonical": "fixed2_30<",
      "bytes": 4,
      "alignment": 4,
      "signedness": "fixed-point",
      "endian": "little",
      "clr": "Double",
      "writerDomain": "exact signed 32-bit integer divided by 2^30; no rounding"
    },
    {
      "spelling": "fixed2_30>",
      "canonical": "fixed2_30>",
      "bytes": 4,
      "alignment": 4,
      "signedness": "fixed-point",
      "endian": "big",
      "clr": "Double",
      "writerDomain": "exact signed 32-bit integer divided by 2^30; no rounding"
    },
    {
      "spelling": "ufixed8_8",
      "canonical": "ufixed8_8",
      "bytes": 2,
      "alignment": 2,
      "signedness": "fixed-point",
      "endian": "layout",
      "clr": "Double",
      "writerDomain": "exact unsigned 16-bit integer divided by 2^8; no rounding"
    },
    {
      "spelling": "ufixed8_8<",
      "canonical": "ufixed8_8<",
      "bytes": 2,
      "alignment": 2,
      "signedness": "fixed-point",
      "endian": "little",
      "clr": "Double",
      "writerDomain": "exact unsigned 16-bit integer divided by 2^8; no rounding"
    },
    {
      "spelling": "ufixed8_8>",
      "canonical": "ufixed8_8>",
      "bytes": 2,
      "alignment": 2,
      "signedness": "fixed-point",
      "endian": "big",
      "clr": "Double",
      "writerDomain": "exact unsigned 16-bit integer divided by 2^8; no rounding"
    },
    {
      "spelling": "uuid",
      "canonical": "uuid",
      "bytes": 16,
      "alignment": 1,
      "signedness": "identifier",
      "endian": "independent",
      "clr": "Guid",
      "writerDomain": "Guid or canonical D-format string; all 128-bit patterns"
    },
    {
      "spelling": "guid",
      "canonical": "guid",
      "bytes": 16,
      "alignment": 1,
      "signedness": "identifier",
      "endian": "independent",
      "clr": "Guid",
      "writerDomain": "Guid or canonical D-format string; all 128-bit patterns"
    },
    {
      "spelling": "latin1",
      "canonical": "latin1",
      "bytes": 1,
      "alignment": 1,
      "signedness": "code-unit",
      "endian": "independent",
      "clr": "Byte",
      "writerDomain": "0..255; counted arrays use strict bounded text encoding"
    },
    {
      "spelling": "cp437",
      "canonical": "cp437",
      "bytes": 1,
      "alignment": 1,
      "signedness": "code-unit",
      "endian": "independent",
      "clr": "Byte",
      "writerDomain": "0..255; counted arrays use strict bounded text encoding"
    },
    {
      "spelling": "utf16le",
      "canonical": "utf16le",
      "bytes": 1,
      "alignment": 1,
      "signedness": "code-unit",
      "endian": "independent",
      "clr": "Byte",
      "writerDomain": "0..255; counted arrays use strict bounded text encoding"
    },
    {
      "spelling": "utf16be",
      "canonical": "utf16be",
      "bytes": 1,
      "alignment": 1,
      "signedness": "code-unit",
      "endian": "independent",
      "clr": "Byte",
      "writerDomain": "0..255; counted arrays use strict bounded text encoding"
    },
    {
      "spelling": "int24",
      "canonical": "int24",
      "bytes": 3,
      "alignment": 1,
      "signedness": "signed",
      "endian": "layout",
      "clr": "Int32",
      "writerDomain": "-8388608..8388607"
    },
    {
      "spelling": "int24>",
      "canonical": "int24>",
      "bytes": 3,
      "alignment": 1,
      "signedness": "signed",
      "endian": "big",
      "clr": "Int32",
      "writerDomain": "-8388608..8388607"
    },
    {
      "spelling": "int24<",
      "canonical": "int24<",
      "bytes": 3,
      "alignment": 1,
      "signedness": "signed",
      "endian": "little",
      "clr": "Int32",
      "writerDomain": "-8388608..8388607"
    },
    {
      "spelling": "uint24",
      "canonical": "uint24",
      "bytes": 3,
      "alignment": 1,
      "signedness": "unsigned",
      "endian": "layout",
      "clr": "UInt32",
      "writerDomain": "0..16777215"
    },
    {
      "spelling": "uint24>",
      "canonical": "uint24>",
      "bytes": 3,
      "alignment": 1,
      "signedness": "unsigned",
      "endian": "big",
      "clr": "UInt32",
      "writerDomain": "0..16777215"
    },
    {
      "spelling": "uint24<",
      "canonical": "uint24<",
      "bytes": 3,
      "alignment": 1,
      "signedness": "unsigned",
      "endian": "little",
      "clr": "UInt32",
      "writerDomain": "0..16777215"
    },
    {
      "spelling": "byte",
      "canonical": "uint8",
      "bytes": 1,
      "alignment": 1,
      "signedness": "unsigned",
      "endian": "independent",
      "clr": "Byte",
      "writerDomain": "0..255"
    },
    {
      "spelling": "int8",
      "canonical": "int8",
      "bytes": 1,
      "alignment": 1,
      "signedness": "signed",
      "endian": "independent",
      "clr": "SByte",
      "writerDomain": "-128..127"
    },
    {
      "spelling": "uint8",
      "canonical": "uint8",
      "bytes": 1,
      "alignment": 1,
      "signedness": "unsigned",
      "endian": "independent",
      "clr": "Byte",
      "writerDomain": "0..255"
    },
    {
      "spelling": "bool",
      "canonical": "bool",
      "bytes": 1,
      "alignment": 1,
      "signedness": "boolean",
      "endian": "independent",
      "clr": "Boolean",
      "writerDomain": "false, true"
    },
    {
      "spelling": "char",
      "canonical": "char",
      "bytes": 1,
      "alignment": 1,
      "signedness": "code-unit",
      "endian": "independent",
      "clr": "Char",
      "writerDomain": "U+0000..U+00FF"
    },
    {
      "spelling": "utf8",
      "canonical": "utf8",
      "bytes": 1,
      "alignment": 1,
      "signedness": "code-unit",
      "endian": "independent",
      "clr": "Byte",
      "writerDomain": "0..255; counted arrays encode/decode strict UTF-8"
    },
    {
      "spelling": "wchar",
      "canonical": "wchar",
      "bytes": 2,
      "alignment": 2,
      "signedness": "code-unit",
      "endian": "layout",
      "clr": "Char",
      "writerDomain": "U+0000..U+FFFF code unit"
    },
    {
      "spelling": "wchar>",
      "canonical": "wchar>",
      "bytes": 2,
      "alignment": 2,
      "signedness": "code-unit",
      "endian": "big",
      "clr": "Char",
      "writerDomain": "U+0000..U+FFFF code unit"
    },
    {
      "spelling": "wchar<",
      "canonical": "wchar<",
      "bytes": 2,
      "alignment": 2,
      "signedness": "code-unit",
      "endian": "little",
      "clr": "Char",
      "writerDomain": "U+0000..U+FFFF code unit"
    },
    {
      "spelling": "int16",
      "canonical": "int16",
      "bytes": 2,
      "alignment": 2,
      "signedness": "signed",
      "endian": "layout",
      "clr": "Int16",
      "writerDomain": "-32768..32767"
    },
    {
      "spelling": "int16>",
      "canonical": "int16>",
      "bytes": 2,
      "alignment": 2,
      "signedness": "signed",
      "endian": "big",
      "clr": "Int16",
      "writerDomain": "-32768..32767"
    },
    {
      "spelling": "int16<",
      "canonical": "int16<",
      "bytes": 2,
      "alignment": 2,
      "signedness": "signed",
      "endian": "little",
      "clr": "Int16",
      "writerDomain": "-32768..32767"
    },
    {
      "spelling": "uint16",
      "canonical": "uint16",
      "bytes": 2,
      "alignment": 2,
      "signedness": "unsigned",
      "endian": "layout",
      "clr": "UInt16",
      "writerDomain": "0..65535"
    },
    {
      "spelling": "uint16>",
      "canonical": "uint16>",
      "bytes": 2,
      "alignment": 2,
      "signedness": "unsigned",
      "endian": "big",
      "clr": "UInt16",
      "writerDomain": "0..65535"
    },
    {
      "spelling": "uint16<",
      "canonical": "uint16<",
      "bytes": 2,
      "alignment": 2,
      "signedness": "unsigned",
      "endian": "little",
      "clr": "UInt16",
      "writerDomain": "0..65535"
    },
    {
      "spelling": "int32",
      "canonical": "int32",
      "bytes": 4,
      "alignment": 4,
      "signedness": "signed",
      "endian": "layout",
      "clr": "Int32",
      "writerDomain": "-2147483648..2147483647"
    },
    {
      "spelling": "int32>",
      "canonical": "int32>",
      "bytes": 4,
      "alignment": 4,
      "signedness": "signed",
      "endian": "big",
      "clr": "Int32",
      "writerDomain": "-2147483648..2147483647"
    },
    {
      "spelling": "int32<",
      "canonical": "int32<",
      "bytes": 4,
      "alignment": 4,
      "signedness": "signed",
      "endian": "little",
      "clr": "Int32",
      "writerDomain": "-2147483648..2147483647"
    },
    {
      "spelling": "uint32",
      "canonical": "uint32",
      "bytes": 4,
      "alignment": 4,
      "signedness": "unsigned",
      "endian": "layout",
      "clr": "UInt32",
      "writerDomain": "0..4294967295"
    },
    {
      "spelling": "uint32>",
      "canonical": "uint32>",
      "bytes": 4,
      "alignment": 4,
      "signedness": "unsigned",
      "endian": "big",
      "clr": "UInt32",
      "writerDomain": "0..4294967295"
    },
    {
      "spelling": "uint32<",
      "canonical": "uint32<",
      "bytes": 4,
      "alignment": 4,
      "signedness": "unsigned",
      "endian": "little",
      "clr": "UInt32",
      "writerDomain": "0..4294967295"
    },
    {
      "spelling": "int64",
      "canonical": "int64",
      "bytes": 8,
      "alignment": 8,
      "signedness": "signed",
      "endian": "layout",
      "clr": "Int64",
      "writerDomain": "-9223372036854775808..9223372036854775807"
    },
    {
      "spelling": "int64>",
      "canonical": "int64>",
      "bytes": 8,
      "alignment": 8,
      "signedness": "signed",
      "endian": "big",
      "clr": "Int64",
      "writerDomain": "-9223372036854775808..9223372036854775807"
    },
    {
      "spelling": "int64<",
      "canonical": "int64<",
      "bytes": 8,
      "alignment": 8,
      "signedness": "signed",
      "endian": "little",
      "clr": "Int64",
      "writerDomain": "-9223372036854775808..9223372036854775807"
    },
    {
      "spelling": "uint64",
      "canonical": "uint64",
      "bytes": 8,
      "alignment": 8,
      "signedness": "unsigned",
      "endian": "layout",
      "clr": "UInt64",
      "writerDomain": "0..18446744073709551615"
    },
    {
      "spelling": "uint64>",
      "canonical": "uint64>",
      "bytes": 8,
      "alignment": 8,
      "signedness": "unsigned",
      "endian": "big",
      "clr": "UInt64",
      "writerDomain": "0..18446744073709551615"
    },
    {
      "spelling": "uint64<",
      "canonical": "uint64<",
      "bytes": 8,
      "alignment": 8,
      "signedness": "unsigned",
      "endian": "little",
      "clr": "UInt64",
      "writerDomain": "0..18446744073709551615"
    },
    {
      "spelling": "float32",
      "canonical": "float32",
      "bytes": 4,
      "alignment": 4,
      "signedness": "floating",
      "endian": "layout",
      "clr": "Single",
      "writerDomain": "Any IEEE-754 binary32 bit pattern, including NaN (any payload), +/-Infinity, subnormals, and negative zero"
    },
    {
      "spelling": "float32>",
      "canonical": "float32>",
      "bytes": 4,
      "alignment": 4,
      "signedness": "floating",
      "endian": "big",
      "clr": "Single",
      "writerDomain": "Any IEEE-754 binary32 bit pattern, including NaN (any payload), +/-Infinity, subnormals, and negative zero"
    },
    {
      "spelling": "float32<",
      "canonical": "float32<",
      "bytes": 4,
      "alignment": 4,
      "signedness": "floating",
      "endian": "little",
      "clr": "Single",
      "writerDomain": "Any IEEE-754 binary32 bit pattern, including NaN (any payload), +/-Infinity, subnormals, and negative zero"
    },
    {
      "spelling": "float64",
      "canonical": "float64",
      "bytes": 8,
      "alignment": 8,
      "signedness": "floating",
      "endian": "layout",
      "clr": "Double",
      "writerDomain": "Any IEEE-754 binary64 bit pattern, including NaN (any payload), +/-Infinity, subnormals, and negative zero"
    },
    {
      "spelling": "float64>",
      "canonical": "float64>",
      "bytes": 8,
      "alignment": 8,
      "signedness": "floating",
      "endian": "big",
      "clr": "Double",
      "writerDomain": "Any IEEE-754 binary64 bit pattern, including NaN (any payload), +/-Infinity, subnormals, and negative zero"
    },
    {
      "spelling": "float64<",
      "canonical": "float64<",
      "bytes": 8,
      "alignment": 8,
      "signedness": "floating",
      "endian": "little",
      "clr": "Double",
      "writerDomain": "Any IEEE-754 binary64 bit pattern, including NaN (any payload), +/-Infinity, subnormals, and negative zero"
    },
    {
      "spelling": "int48",
      "canonical": "int48",
      "bytes": 6,
      "alignment": 1,
      "signedness": "signed",
      "endian": "layout",
      "clr": "Int64",
      "writerDomain": "-140737488355328..140737488355327"
    },
    {
      "spelling": "int48<",
      "canonical": "int48<",
      "bytes": 6,
      "alignment": 1,
      "signedness": "signed",
      "endian": "little",
      "clr": "Int64",
      "writerDomain": "-140737488355328..140737488355327"
    },
    {
      "spelling": "int48>",
      "canonical": "int48>",
      "bytes": 6,
      "alignment": 1,
      "signedness": "signed",
      "endian": "big",
      "clr": "Int64",
      "writerDomain": "-140737488355328..140737488355327"
    },
    {
      "spelling": "uint48",
      "canonical": "uint48",
      "bytes": 6,
      "alignment": 1,
      "signedness": "unsigned",
      "endian": "layout",
      "clr": "UInt64",
      "writerDomain": "0..281474976710655"
    },
    {
      "spelling": "uint48<",
      "canonical": "uint48<",
      "bytes": 6,
      "alignment": 1,
      "signedness": "unsigned",
      "endian": "little",
      "clr": "UInt64",
      "writerDomain": "0..281474976710655"
    },
    {
      "spelling": "uint48>",
      "canonical": "uint48>",
      "bytes": 6,
      "alignment": 1,
      "signedness": "unsigned",
      "endian": "big",
      "clr": "UInt64",
      "writerDomain": "0..281474976710655"
    },
    {
      "spelling": "int128",
      "canonical": "int128",
      "bytes": 16,
      "alignment": 16,
      "signedness": "signed",
      "endian": "layout",
      "clr": "Int128",
      "writerDomain": "-170141183460469231731687303715884105728..170141183460469231731687303715884105727"
    },
    {
      "spelling": "int128<",
      "canonical": "int128<",
      "bytes": 16,
      "alignment": 16,
      "signedness": "signed",
      "endian": "little",
      "clr": "Int128",
      "writerDomain": "-170141183460469231731687303715884105728..170141183460469231731687303715884105727"
    },
    {
      "spelling": "int128>",
      "canonical": "int128>",
      "bytes": 16,
      "alignment": 16,
      "signedness": "signed",
      "endian": "big",
      "clr": "Int128",
      "writerDomain": "-170141183460469231731687303715884105728..170141183460469231731687303715884105727"
    },
    {
      "spelling": "uint128",
      "canonical": "uint128",
      "bytes": 16,
      "alignment": 16,
      "signedness": "unsigned",
      "endian": "layout",
      "clr": "UInt128",
      "writerDomain": "0..340282366920938463463374607431768211455"
    },
    {
      "spelling": "uint128<",
      "canonical": "uint128<",
      "bytes": 16,
      "alignment": 16,
      "signedness": "unsigned",
      "endian": "little",
      "clr": "UInt128",
      "writerDomain": "0..340282366920938463463374607431768211455"
    },
    {
      "spelling": "uint128>",
      "canonical": "uint128>",
      "bytes": 16,
      "alignment": 16,
      "signedness": "unsigned",
      "endian": "big",
      "clr": "UInt128",
      "writerDomain": "0..340282366920938463463374607431768211455"
    },
    {
      "spelling": "float16",
      "canonical": "float16",
      "bytes": 2,
      "alignment": 2,
      "signedness": "floating",
      "endian": "layout",
      "clr": "Half",
      "writerDomain": "Any IEEE-754 binary16 bit pattern"
    },
    {
      "spelling": "float16<",
      "canonical": "float16<",
      "bytes": 2,
      "alignment": 2,
      "signedness": "floating",
      "endian": "little",
      "clr": "Half",
      "writerDomain": "Any IEEE-754 binary16 bit pattern"
    },
    {
      "spelling": "float16>",
      "canonical": "float16>",
      "bytes": 2,
      "alignment": 2,
      "signedness": "floating",
      "endian": "big",
      "clr": "Half",
      "writerDomain": "Any IEEE-754 binary16 bit pattern"
    }
  ],
  "dynamicNumericPrimitives": [
    {
      "spelling": "uleb128_32",
      "alignment": 1,
      "maximumBytes": 5,
      "clr": "UInt32",
      "reader": "width-bounded; legal padded encodings accepted",
      "writer": "canonical; in-place updates require unchanged encoded length"
    },
    {
      "spelling": "uleb128_64",
      "alignment": 1,
      "maximumBytes": 10,
      "clr": "UInt64",
      "reader": "width-bounded; legal padded encodings accepted",
      "writer": "canonical; in-place updates require unchanged encoded length"
    },
    {
      "spelling": "sleb128_32",
      "alignment": 1,
      "maximumBytes": 5,
      "clr": "Int32",
      "reader": "width-bounded; legal padded encodings accepted",
      "writer": "canonical; in-place updates require unchanged encoded length"
    },
    {
      "spelling": "sleb128_64",
      "alignment": 1,
      "maximumBytes": 10,
      "clr": "Int64",
      "reader": "width-bounded; legal padded encodings accepted",
      "writer": "canonical; in-place updates require unchanged encoded length"
    }
  ],
  "terminatedPrimitives": [
    {
      "spelling": "ascii_string_zero",
      "encoding": "strict ASCII",
      "terminator": "NUL",
      "endian": "independent",
      "alignment": 1,
      "clr": "String"
    },
    {
      "spelling": "ascii_string_newline",
      "encoding": "strict ASCII",
      "terminator": "LF",
      "endian": "independent",
      "alignment": 1,
      "clr": "String"
    },
    {
      "spelling": "utf8_string_zero",
      "encoding": "strict UTF-8",
      "terminator": "NUL",
      "endian": "independent",
      "alignment": 1,
      "clr": "String"
    },
    {
      "spelling": "utf8_string_newline",
      "encoding": "strict UTF-8",
      "terminator": "LF",
      "endian": "independent",
      "alignment": 1,
      "clr": "String"
    },
    {
      "spelling": "unicode_string_zero",
      "encoding": "strict UTF-16",
      "terminator": "NUL",
      "endian": "layout",
      "alignment": 1,
      "clr": "String"
    },
    {
      "spelling": "unicode_string_zero>",
      "encoding": "strict UTF-16",
      "terminator": "NUL",
      "endian": "big",
      "alignment": 1,
      "clr": "String"
    },
    {
      "spelling": "unicode_string_zero<",
      "encoding": "strict UTF-16",
      "terminator": "NUL",
      "endian": "little",
      "alignment": 1,
      "clr": "String"
    },
    {
      "spelling": "unicode_string_newline",
      "encoding": "strict UTF-16",
      "terminator": "LF",
      "endian": "layout",
      "alignment": 1,
      "clr": "String"
    },
    {
      "spelling": "unicode_string_newline>",
      "encoding": "strict UTF-16",
      "terminator": "LF",
      "endian": "big",
      "alignment": 1,
      "clr": "String"
    },
    {
      "spelling": "unicode_string_newline<",
      "encoding": "strict UTF-16",
      "terminator": "LF",
      "endian": "little",
      "alignment": 1,
      "clr": "String"
    },
    {
      "spelling": "string",
      "encoding": "strict UTF-16",
      "terminator": "NUL",
      "endian": "layout",
      "alignment": 1,
      "clr": "String"
    },
    {
      "spelling": "string>",
      "encoding": "strict UTF-16",
      "terminator": "NUL",
      "endian": "big",
      "alignment": 1,
      "clr": "String"
    },
    {
      "spelling": "string<",
      "encoding": "strict UTF-16",
      "terminator": "NUL",
      "endian": "little",
      "alignment": 1,
      "clr": "String"
    },
    {
      "spelling": "cstring",
      "encoding": "strict ASCII",
      "terminator": "NUL",
      "endian": "independent",
      "alignment": 1,
      "clr": "String"
    }
  ],
  "layoutExamples": [
    {
      "id": "packed-mixed",
      "definition": "struct sample { uint8 a; uint32 b; uint16 c; };",
      "root": "sample",
      "pointerSize": 4,
      "littleEndian": true,
      "aligned": false,
      "size": 7,
      "alignment": 4,
      "offsets": {
        "sample.a": 0,
        "sample.b": 1,
        "sample.c": 5
      },
      "values": {
        "sample.a": "17",
        "sample.b": "573785173",
        "sample.c": "26231"
      },
      "bytes": "11554433227766"
    },
    {
      "id": "aligned-mixed",
      "definition": "struct sample { uint8 a; uint32 b; uint16 c; };",
      "root": "sample",
      "pointerSize": 4,
      "littleEndian": true,
      "aligned": true,
      "size": 12,
      "alignment": 4,
      "offsets": {
        "sample.a": 0,
        "sample.b": 4,
        "sample.c": 8
      },
      "values": {
        "sample.a": "17",
        "sample.b": "573785173",
        "sample.c": "26231"
      },
      "bytes": "110000005544332277660000"
    },
    {
      "id": "aligned-nested-array",
      "definition": "struct inner { uint8 tag; uint32 value; }; struct root { uint16 prefix; inner items[2]; uint8 tail; };",
      "root": "root",
      "pointerSize": 4,
      "littleEndian": true,
      "aligned": true,
      "size": 24,
      "alignment": 4,
      "offsets": {
        "root.prefix": 0,
        "root.items[0].tag": 4,
        "root.items[0].value": 8,
        "root.items[1].tag": 12,
        "root.items[1].value": 16,
        "root.tail": 20
      },
      "values": {
        "root.prefix": "4660",
        "root.items[0].tag": "161",
        "root.items[0].value": "287454020",
        "root.items[1].tag": "162",
        "root.items[1].value": "1432778632",
        "root.tail": "238"
      },
      "bytes": "34120000A100000044332211A200000088776655EE000000"
    },
    {
      "id": "aligned-union",
      "definition": "union choice { uint8 small; uint32 large; };",
      "root": "choice",
      "pointerSize": 4,
      "littleEndian": true,
      "aligned": true,
      "size": 4,
      "alignment": 4,
      "offsets": {
        "choice.small": 0,
        "choice.large": 0
      },
      "values": {
        "choice.small": "165",
        "choice.large": "165"
      },
      "bytes": "A5000000"
    },
    {
      "id": "explicit-endian",
      "definition": "struct endian_sample { uint16> be; uint16< le; wchar> ch; };",
      "root": "endian_sample",
      "pointerSize": 4,
      "littleEndian": true,
      "aligned": false,
      "size": 6,
      "alignment": 2,
      "offsets": {
        "endian_sample.be": 0,
        "endian_sample.le": 2,
        "endian_sample.ch": 4
      },
      "values": {
        "endian_sample.be": "4660",
        "endian_sample.le": "22136",
        "endian_sample.ch": "A"
      },
      "bytes": "123478560041"
    },
    {
      "id": "portable-bitfields",
      "definition": "struct flags { uint8 low : 3; uint8 high : 5; uint16 next; };",
      "root": "flags",
      "pointerSize": 4,
      "littleEndian": true,
      "aligned": false,
      "size": 3,
      "alignment": 2,
      "offsets": {
        "flags.low": 0,
        "flags.high": 0,
        "flags.next": 1
      },
      "values": {
        "flags.low": "5",
        "flags.high": "17",
        "flags.next": "4660"
      },
      "bytes": "8D3412"
    },
    {
      "id": "packed-null-pointer",
      "definition": "struct pointer_sample { uint8 marker; uint16 *target; };",
      "root": "pointer_sample",
      "pointerSize": 2,
      "littleEndian": true,
      "aligned": false,
      "size": 3,
      "alignment": 2,
      "offsets": {
        "pointer_sample.marker": 0,
        "pointer_sample.target.address": 1
      },
      "values": {
        "pointer_sample.marker": "170",
        "pointer_sample.target.address": "0",
        "pointer_sample.target.depth": "1",
        "pointer_sample.target.isNull": "true"
      },
      "bytes": "AA0000"
    },
    {
      "id": "aligned-null-pointer",
      "definition": "struct pointer_sample { uint8 marker; uint16 *target; };",
      "root": "pointer_sample",
      "pointerSize": 2,
      "littleEndian": true,
      "aligned": true,
      "size": 4,
      "alignment": 2,
      "offsets": {
        "pointer_sample.marker": 0,
        "pointer_sample.target.address": 2
      },
      "values": {
        "pointer_sample.marker": "170",
        "pointer_sample.target.address": "0",
        "pointer_sample.target.depth": "1",
        "pointer_sample.target.isNull": "true"
      },
      "bytes": "AA000000"
    },
    {
      "id": "boolean-round-trip",
      "definition": "struct sample { bool flag; uint8 tail; };",
      "root": "sample",
      "pointerSize": 4,
      "littleEndian": true,
      "aligned": false,
      "size": 2,
      "alignment": 1,
      "offsets": {
        "sample.flag": 0,
        "sample.tail": 1
      },
      "values": {
        "sample.flag": "true",
        "sample.tail": "170"
      },
      "bytes": "01AA"
    },
    {
      "id": "alignment-override",
      "definition": "struct sample { uint8 a; uint8 value @align(4); };",
      "root": "sample",
      "pointerSize": 4,
      "littleEndian": true,
      "aligned": true,
      "size": 8,
      "alignment": 4,
      "offsets": {
        "sample.a": 0,
        "sample.value": 4
      },
      "values": {
        "sample.a": "1",
        "sample.value": "2"
      },
      "bytes": "0100000002000000"
    },
    {
      "id": "offset-assertion",
      "definition": "struct sample { uint8 a; uint8 b; uint8 value @2; };",
      "root": "sample",
      "pointerSize": 4,
      "littleEndian": true,
      "aligned": false,
      "size": 3,
      "alignment": 1,
      "offsets": {
        "sample.a": 0,
        "sample.b": 1,
        "sample.value": 2
      },
      "values": {
        "sample.a": "1",
        "sample.b": "2",
        "sample.value": "3"
      },
      "bytes": "010203"
    },
    {
      "id": "composite-alignment-override",
      "definition": "struct sample @align(1) { uint8 a; uint32 b; };",
      "root": "sample",
      "pointerSize": 4,
      "littleEndian": true,
      "aligned": true,
      "size": 5,
      "alignment": 1,
      "offsets": {
        "sample.a": 0,
        "sample.b": 1
      },
      "values": {
        "sample.a": "1",
        "sample.b": "67305985"
      },
      "bytes": "0101020304"
    },
    {
      "id": "anonymous-bitfield-padding",
      "definition": "struct sample { uint8 flag:1, :3, other:4; };",
      "root": "sample",
      "pointerSize": 4,
      "littleEndian": true,
      "aligned": false,
      "size": 1,
      "alignment": 1,
      "offsets": {
        "sample.flag": 0,
        "sample.other": 0
      },
      "values": {
        "sample.flag": "1",
        "sample.other": "5"
      },
      "bytes": "51"
    },
    {
      "id": "anonymous-promoted-member",
      "definition": "struct sample { uint8 a; struct { uint8 x; uint8 y; }; uint8 b; };",
      "root": "sample",
      "pointerSize": 4,
      "littleEndian": true,
      "aligned": false,
      "size": 4,
      "alignment": 1,
      "offsets": {
        "sample.a": 0,
        "sample.x": 1,
        "sample.y": 2,
        "sample.b": 3
      },
      "values": {
        "sample.a": "1",
        "sample.x": "2",
        "sample.y": "3",
        "sample.b": "4"
      },
      "bytes": "01020304"
    },
    {
      "id": "floating-point-primitives",
      "definition": "struct sample { float32 a; float64 b; };",
      "root": "sample",
      "pointerSize": 4,
      "littleEndian": true,
      "aligned": false,
      "size": 12,
      "alignment": 8,
      "offsets": {
        "sample.a": 0,
        "sample.b": 4
      },
      "values": {
        "sample.a": "1.5",
        "sample.b": "2.5"
      },
      "bytes": "0000C03F0000000000000440"
    }
  ],
  "unsupportedConstructs": [
    {
      "id": "tag-kind-mismatch",
      "definition": "struct child { uint8 value; }; struct root { union child value; };",
      "category": "C tag namespace"
    },
    {
      "id": "runtime-sized-multidimensional-array",
      "definition": "struct root { uint8 count; uint8 values[count][3]; };",
      "category": "multidimensional array"
    },
    {
      "id": "qualifier-not-in-closed-set",
      "definition": "struct root { _Atomic uint8 value; };",
      "category": "qualifier"
    },
    {
      "id": "trailing-qualifier-position",
      "definition": "struct root { uint8 value const; };",
      "category": "qualifier"
    },
    {
      "id": "non-power-of-two-alignment",
      "definition": "struct root { uint8 value @align(3); };",
      "category": "explicit placement"
    },
    {
      "id": "non-power-of-two-composite-alignment",
      "definition": "struct root @align(3) { uint8 value; };",
      "category": "explicit placement"
    },
    {
      "id": "offset-assertion-mismatch",
      "definition": "struct root { uint8 a; uint8 value @5; };",
      "category": "explicit placement"
    },
    {
      "id": "offset-assertion-on-bitfield",
      "definition": "struct root { uint8 flag : 1 @2; };",
      "category": "explicit placement"
    },
    {
      "id": "unrecognized-integer-spelling",
      "definition": "struct root { intmax_t value; };",
      "category": "host fundamental type"
    },
    {
      "id": "floating-point-field",
      "definition": "struct root { long double value; };",
      "category": "floating-point codec"
    },
    {
      "id": "zero-width-bitfield",
      "definition": "struct root { uint8 reserved : 0; };",
      "category": "zero-width bitfield"
    },
    {
      "id": "pointer-to-typedef-array",
      "definition": "typedef uint16 pair[2]; struct root { pair *value; };",
      "category": "pointer-to-array storage"
    },
    {
      "id": "pointer-alias-to-typedef-array",
      "definition": "typedef uint8 pair[2]; typedef pair *middle; typedef middle link; struct root { uint8 value; };",
      "category": "pointer-to-array storage"
    },
    {
      "id": "unsized-typedef-array",
      "definition": "typedef uint16 open[]; struct root { open value; };",
      "category": "incomplete array type"
    },
    {
      "id": "negative-unused-typedef-array",
      "definition": "typedef uint8 invalid[-1]; struct root { uint8 value; };",
      "category": "negative array count"
    },
    {
      "id": "duplicate-typedef-tag",
      "definition": "typedef struct shared { uint8 small; } first; typedef struct shared { uint32 large; } second;",
      "category": "tag redefinition"
    },
    {
      "id": "tag-alias-kind-mismatch",
      "definition": "struct tag { uint8 value; }; typedef union tag alias; struct root { alias value; };",
      "category": "tag kind mismatch"
    },
    {
      "id": "include-without-delimiters",
      "definition": "#include stdint.h\nstruct root { uint8 value; };",
      "category": "translation-unit preprocessing"
    },
    {
      "id": "unterminated-conditional",
      "definition": "#ifdef X\nstruct root { uint8 value; };",
      "category": "translation-unit preprocessing"
    },
    {
      "id": "unknown-preprocessor-directive",
      "definition": "#error stop\nstruct root { uint8 value; };",
      "category": "translation-unit preprocessing"
    },
    {
      "id": "text-constant-in-expression",
      "definition": "#define MAGIC \"CD001\"\nstruct root { uint8 value[MAGIC]; };",
      "category": "non-integer constant"
    },
    {
      "id": "non-power-of-two-pack-pragma",
      "definition": "#pragma pack(3)\nstruct root { uint8 value; uint32 wide; };",
      "category": "alignment rule"
    },
    {
      "id": "dynamic-union-member",
      "definition": "union choice { uint8 count; uint8 values[count]; };",
      "category": "union storage"
    },
    {
      "id": "void-value-field",
      "definition": "struct root { void value; };",
      "category": "incomplete type"
    },
    {
      "id": "data-sized-array-of-dynamic-element",
      "definition": "struct entry { uint8 count; uint8 values[count]; }; struct root { entry entries[]; };",
      "category": "array extent"
    },
    {
      "id": "sizeof-of-dynamic-type",
      "definition": "struct entry { uint8 count; uint8 values[count]; }; struct root { uint8 raw[sizeof(entry)]; };",
      "category": "expression"
    },
    {
      "id": "sizeof-of-multiplication",
      "definition": "#define h 2\n#define o 3\ntypedef uint8 ho; struct root { uint8 raw[sizeof(h*o)]; };",
      "category": "type-only expression argument"
    },
    {
      "id": "unsupported-expression-call",
      "definition": "struct root { uint8 raw[strlen(root)]; };",
      "category": "expression"
    },
    {
      "id": "anonymous-flag-expression-member",
      "definition": "#define N 2\nflag { A = N, B }; struct root { uint8 value; };",
      "category": "member value"
    },
    {
      "id": "enum-value-outside-storage",
      "definition": "enum kind : uint8 { BIG = 256 }; struct root { kind value; };",
      "category": "enum storage"
    },
    {
      "id": "indexed-nested-reference",
      "definition": "struct h { uint8 n; }; struct root { h items[2]; uint8 v[items[0].n]; };",
      "category": "expression"
    }
  ],
  "aliasSpellings": [
    {
      "spelling": "cstring",
      "canonical": "ascii_string_zero"
    },
    {
      "spelling": "_Bool",
      "canonical": "bool"
    },
    {
      "spelling": "CHAR",
      "canonical": "char"
    },
    {
      "spelling": "float",
      "canonical": "float32"
    },
    {
      "spelling": "FLOAT",
      "canonical": "float32"
    },
    {
      "spelling": "double",
      "canonical": "float64"
    },
    {
      "spelling": "DOUBLE",
      "canonical": "float64"
    },
    {
      "spelling": "__int128",
      "canonical": "int128"
    },
    {
      "spelling": "__s128",
      "canonical": "int128"
    },
    {
      "spelling": "INT128",
      "canonical": "int128"
    },
    {
      "spelling": "int128_t",
      "canonical": "int128"
    },
    {
      "spelling": "s128",
      "canonical": "int128"
    },
    {
      "spelling": "__int16",
      "canonical": "int16"
    },
    {
      "spelling": "__s16",
      "canonical": "int16"
    },
    {
      "spelling": "INT16",
      "canonical": "int16"
    },
    {
      "spelling": "int16_t",
      "canonical": "int16"
    },
    {
      "spelling": "s16",
      "canonical": "int16"
    },
    {
      "spelling": "short",
      "canonical": "int16"
    },
    {
      "spelling": "SHORT",
      "canonical": "int16"
    },
    {
      "spelling": "short int",
      "canonical": "int16"
    },
    {
      "spelling": "signed short",
      "canonical": "int16"
    },
    {
      "spelling": "signed short int",
      "canonical": "int16"
    },
    {
      "spelling": "__int32",
      "canonical": "int32"
    },
    {
      "spelling": "__s32",
      "canonical": "int32"
    },
    {
      "spelling": "int",
      "canonical": "int32"
    },
    {
      "spelling": "INT",
      "canonical": "int32"
    },
    {
      "spelling": "INT32",
      "canonical": "int32"
    },
    {
      "spelling": "int32_t",
      "canonical": "int32"
    },
    {
      "spelling": "LONG",
      "canonical": "int32"
    },
    {
      "spelling": "LONG32",
      "canonical": "int32"
    },
    {
      "spelling": "s32",
      "canonical": "int32"
    },
    {
      "spelling": "signed",
      "canonical": "int32"
    },
    {
      "spelling": "signed int",
      "canonical": "int32"
    },
    {
      "spelling": "__int64",
      "canonical": "int64"
    },
    {
      "spelling": "__s64",
      "canonical": "int64"
    },
    {
      "spelling": "INT64",
      "canonical": "int64"
    },
    {
      "spelling": "int64_t",
      "canonical": "int64"
    },
    {
      "spelling": "long long",
      "canonical": "int64"
    },
    {
      "spelling": "long long int",
      "canonical": "int64"
    },
    {
      "spelling": "LONG64",
      "canonical": "int64"
    },
    {
      "spelling": "LONGLONG",
      "canonical": "int64"
    },
    {
      "spelling": "s64",
      "canonical": "int64"
    },
    {
      "spelling": "signed long long",
      "canonical": "int64"
    },
    {
      "spelling": "signed long long int",
      "canonical": "int64"
    },
    {
      "spelling": "__int8",
      "canonical": "int8"
    },
    {
      "spelling": "__s8",
      "canonical": "int8"
    },
    {
      "spelling": "INT8",
      "canonical": "int8"
    },
    {
      "spelling": "int8_t",
      "canonical": "int8"
    },
    {
      "spelling": "s8",
      "canonical": "int8"
    },
    {
      "spelling": "signed char",
      "canonical": "int8"
    },
    {
      "spelling": "ileb128",
      "canonical": "sleb128_64"
    },
    {
      "spelling": "sleb128",
      "canonical": "sleb128_64"
    },
    {
      "spelling": "__u128",
      "canonical": "uint128"
    },
    {
      "spelling": "_OWORD",
      "canonical": "uint128"
    },
    {
      "spelling": "OWORD",
      "canonical": "uint128"
    },
    {
      "spelling": "u128",
      "canonical": "uint128"
    },
    {
      "spelling": "UINT128",
      "canonical": "uint128"
    },
    {
      "spelling": "uint128_t",
      "canonical": "uint128"
    },
    {
      "spelling": "unsigned __int128",
      "canonical": "uint128"
    },
    {
      "spelling": "__u16",
      "canonical": "uint16"
    },
    {
      "spelling": "_WORD",
      "canonical": "uint16"
    },
    {
      "spelling": "u_int16_t",
      "canonical": "uint16"
    },
    {
      "spelling": "u_short",
      "canonical": "uint16"
    },
    {
      "spelling": "u16",
      "canonical": "uint16"
    },
    {
      "spelling": "UINT16",
      "canonical": "uint16"
    },
    {
      "spelling": "uint16_t",
      "canonical": "uint16"
    },
    {
      "spelling": "unsigned __int16",
      "canonical": "uint16"
    },
    {
      "spelling": "unsigned short",
      "canonical": "uint16"
    },
    {
      "spelling": "unsigned short int",
      "canonical": "uint16"
    },
    {
      "spelling": "ushort",
      "canonical": "uint16"
    },
    {
      "spelling": "USHORT",
      "canonical": "uint16"
    },
    {
      "spelling": "WORD",
      "canonical": "uint16"
    },
    {
      "spelling": "__u32",
      "canonical": "uint32"
    },
    {
      "spelling": "_DWORD",
      "canonical": "uint32"
    },
    {
      "spelling": "DWORD",
      "canonical": "uint32"
    },
    {
      "spelling": "DWORD32",
      "canonical": "uint32"
    },
    {
      "spelling": "u_int",
      "canonical": "uint32"
    },
    {
      "spelling": "u_int32_t",
      "canonical": "uint32"
    },
    {
      "spelling": "u32",
      "canonical": "uint32"
    },
    {
      "spelling": "uint",
      "canonical": "uint32"
    },
    {
      "spelling": "UINT",
      "canonical": "uint32"
    },
    {
      "spelling": "UINT32",
      "canonical": "uint32"
    },
    {
      "spelling": "uint32_t",
      "canonical": "uint32"
    },
    {
      "spelling": "ULONG",
      "canonical": "uint32"
    },
    {
      "spelling": "ULONG32",
      "canonical": "uint32"
    },
    {
      "spelling": "unsigned",
      "canonical": "uint32"
    },
    {
      "spelling": "unsigned __int32",
      "canonical": "uint32"
    },
    {
      "spelling": "unsigned int",
      "canonical": "uint32"
    },
    {
      "spelling": "__u64",
      "canonical": "uint64"
    },
    {
      "spelling": "_QWORD",
      "canonical": "uint64"
    },
    {
      "spelling": "DWORD64",
      "canonical": "uint64"
    },
    {
      "spelling": "DWORDLONG",
      "canonical": "uint64"
    },
    {
      "spelling": "QWORD",
      "canonical": "uint64"
    },
    {
      "spelling": "u_int64_t",
      "canonical": "uint64"
    },
    {
      "spelling": "u64",
      "canonical": "uint64"
    },
    {
      "spelling": "UINT64",
      "canonical": "uint64"
    },
    {
      "spelling": "uint64_t",
      "canonical": "uint64"
    },
    {
      "spelling": "ULONG64",
      "canonical": "uint64"
    },
    {
      "spelling": "ULONGLONG",
      "canonical": "uint64"
    },
    {
      "spelling": "unsigned __int64",
      "canonical": "uint64"
    },
    {
      "spelling": "unsigned long long",
      "canonical": "uint64"
    },
    {
      "spelling": "unsigned long long int",
      "canonical": "uint64"
    },
    {
      "spelling": "__u8",
      "canonical": "uint8"
    },
    {
      "spelling": "_BYTE",
      "canonical": "uint8"
    },
    {
      "spelling": "BYTE",
      "canonical": "uint8"
    },
    {
      "spelling": "u_char",
      "canonical": "uint8"
    },
    {
      "spelling": "u_int8_t",
      "canonical": "uint8"
    },
    {
      "spelling": "u8",
      "canonical": "uint8"
    },
    {
      "spelling": "uchar",
      "canonical": "uint8"
    },
    {
      "spelling": "UCHAR",
      "canonical": "uint8"
    },
    {
      "spelling": "UINT8",
      "canonical": "uint8"
    },
    {
      "spelling": "uint8_t",
      "canonical": "uint8"
    },
    {
      "spelling": "unsigned __int8",
      "canonical": "uint8"
    },
    {
      "spelling": "unsigned char",
      "canonical": "uint8"
    },
    {
      "spelling": "uleb128",
      "canonical": "uleb128_64"
    },
    {
      "spelling": "string",
      "canonical": "unicode_string_zero"
    },
    {
      "spelling": "string<",
      "canonical": "unicode_string_zero<"
    },
    {
      "spelling": "string>",
      "canonical": "unicode_string_zero>"
    },
    {
      "spelling": "VOID",
      "canonical": "void"
    },
    {
      "spelling": "WCHAR",
      "canonical": "wchar"
    },
    {
      "spelling": "wchar_t",
      "canonical": "wchar"
    },
    {
      "spelling": "long",
      "canonical": "int64",
      "cLongWidth32": "int32"
    },
    {
      "spelling": "long int",
      "canonical": "int64",
      "cLongWidth32": "int32"
    },
    {
      "spelling": "signed long",
      "canonical": "int64",
      "cLongWidth32": "int32"
    },
    {
      "spelling": "signed long int",
      "canonical": "int64",
      "cLongWidth32": "int32"
    },
    {
      "spelling": "time_t",
      "canonical": "int64",
      "cLongWidth32": "int32"
    },
    {
      "spelling": "off_t",
      "canonical": "int64",
      "cLongWidth32": "int32"
    },
    {
      "spelling": "ulong",
      "canonical": "uint64",
      "cLongWidth32": "uint32"
    },
    {
      "spelling": "unsigned long",
      "canonical": "uint64",
      "cLongWidth32": "uint32"
    },
    {
      "spelling": "unsigned long int",
      "canonical": "uint64",
      "cLongWidth32": "uint32"
    },
    {
      "spelling": "size_t",
      "canonical": "uint{pointer bits}"
    },
    {
      "spelling": "uintptr_t",
      "canonical": "uint{pointer bits}"
    },
    {
      "spelling": "SIZE_T",
      "canonical": "uint{pointer bits}"
    },
    {
      "spelling": "ULONG_PTR",
      "canonical": "uint{pointer bits}"
    },
    {
      "spelling": "UINT_PTR",
      "canonical": "uint{pointer bits}"
    },
    {
      "spelling": "DWORD_PTR",
      "canonical": "uint{pointer bits}"
    },
    {
      "spelling": "ssize_t",
      "canonical": "int{pointer bits}"
    },
    {
      "spelling": "intptr_t",
      "canonical": "int{pointer bits}"
    },
    {
      "spelling": "ptrdiff_t",
      "canonical": "int{pointer bits}"
    },
    {
      "spelling": "SSIZE_T",
      "canonical": "int{pointer bits}"
    },
    {
      "spelling": "LONG_PTR",
      "canonical": "int{pointer bits}"
    },
    {
      "spelling": "INT_PTR",
      "canonical": "int{pointer bits}"
    },
    {
      "spelling": "PVOID",
      "canonical": "void*"
    },
    {
      "spelling": "LPVOID",
      "canonical": "void*"
    },
    {
      "spelling": "LPCVOID",
      "canonical": "void*"
    },
    {
      "spelling": "HANDLE",
      "canonical": "void*"
    },
    {
      "spelling": "PSTR",
      "canonical": "char*"
    },
    {
      "spelling": "LPSTR",
      "canonical": "char*"
    },
    {
      "spelling": "PCSTR",
      "canonical": "char*"
    },
    {
      "spelling": "LPCSTR",
      "canonical": "char*"
    },
    {
      "spelling": "PWSTR",
      "canonical": "wchar*"
    },
    {
      "spelling": "LPWSTR",
      "canonical": "wchar*"
    },
    {
      "spelling": "PCWSTR",
      "canonical": "wchar*"
    },
    {
      "spelling": "LPCWSTR",
      "canonical": "wchar*"
    }
  ]
}
