| object :empty | |
| object TestBase | |
| member enum1: TestEnum optional=False | |
| enum TestEnum ['value1', 'value2'] | |
| object TestTypeA | |
| member string: str optional=False | |
| object TestTypeB | |
| member integer: int optional=False | |
| object TestUnion | |
| base TestBase | |
| tag enum1 | |
| case value1: TestTypeA | |
| case value2: TestTypeB |