2. A 16-bit value divided into several fields.
When using bit fields, the least significant bits within a byte shall appear first.
1. A structured type with optional fields.
It is necessary to explicitly specify any padding bits required to ensure subsequent fields line up on byte boundaries.
1. An array of integers.
Nothing is encoded for the Array field if the Size field has a value ≤ 0.
1. An array of integers with a terminator instead of a length prefix.
The terminator is 32,767 converted to hexadecimal with LittleEndian byte order.
1. A simple union.
The *ArrayLength* field is optional. If it is not present in an encoded value, then the length of all fields with *LengthField* set to “ArrayLength” have a length of 1.
It is valid for the *VariantType* field to have a value that has no matching field defined. This simply means all optional fields are not present in the encoded value.
1. An enumerated type.
The documentation element is used to provide human readable description of the type and values.
1. A nillable array.