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