@extensibility(FINAL) @nested
union TestUnion_t switch (char) {
    case 'a':
        long LongU;
    default:
        octet OctetU;
};

@bit_bound(9)
bitmask TestBitmask_t {
    @position(0) POS1,
    @position(3) POS3,
    @position(4) POS4
};

@bit_bound(7)
enum TestEnum_t {
    A,
    B,
    C,
    D
};

typedef octet TestArray_t[5];

@extensibility(FINAL) @nested
struct NestedStruct_t {
    @key TestArray_t TestArray;
    char TestChar;
    wchar TestWChar;
    long long TestLongLong;
    @optional long double TestLongDouble;
};

typedef sequence<NestedStruct_t, 4> TestSequence_t;
typedef string<12> TestString_t;
typedef TestMap_t map<octet, short, 4>;

@extensibility(FINAL) @topic
struct Type2 {
    @key long id;
    @key TestSequence_t TestSequence;
    TestMap_t TestMap;
    TestEnum_t TestEnum;
    @optional TestUnion_t TestUnion;
    TestBitmask_t TestBitmask
    TestString_t TestString;
};

@final
struct NestedStruct_tKeyHolder {
    TestArray_t TestArray;
};

typedef sequence<NestedStruct_tKeyHolder, 4> TestSequence_tKeyHolder;

@final
struct Type2KeyHolder {
    long id;
    TestSequence_tKeyHolder TestSequence;
};