object :empty
object Base
    member enum1: TestEnum optional=False
    member c_d: str optional=True
object Branch1
    member string: str optional=False
object Branch2
    member value: int optional=False
enum TestEnum ['base', 'c-d']
object TestUnion
    base Base
    tag enum1
    case base: Branch1
    case c-d: Branch2
