struct StructSingleton { singleton; } struct StructWithBool { field a: Bool; field b: Bool; } struct StructWithInt8 { field a: Int8; field b: Int8; } struct StructWithInt32 { field a: Int32; field b: Int32; } struct StructWithInt64 { field a: Int64; field b: Int64; } struct StructWithString { field a: String; field b: String; } struct StructWithStruct { field inner: StructWithInt32; field c: Int32; } struct StructWithList { field a: List[Int64]; field b: List[StructWithInt32]; } struct StructWithOption { field a: Option[Int64]; field b: Option[StructWithInt32]; } enum EnumWithVariants { variant zero; variant one; variant two; } struct StructWithEnum { field inner: EnumWithVariants; field c: Int32; } sum SumWithVariants { variant VariantOne; variant VariantTwo; } struct VariantOne { field a: Int32; } struct VariantTwo { field a: Int64; } sum SumWithBoxedVariants { variant VariantOne box; variant VariantTwo box; } struct StructWithSum { field inner: SumWithVariants; field b: Int32; } struct StructWithListOfShared { field inner: List[Shared[StructWithInt32]]; } struct StructWithDifferentSharedTypes { field a: Shared[StructWithInt32]; field b: Shared[StructWithInt64]; field c: Shared[StructWithInt32]; } struct StructWithSharedSumAndVariant { field a: Shared[SumWithVariants]; field b: Shared[VariantOne]; }