type StylePoint*[T] = object x: T y: T type StyleFoo_Tag* = uint8 type Foo_Body* = object tag*: StyleFoo_Tag x: int32 y: StylePoint[T] z: StylePoint[float32] type Bar_Body* = object tag*: StyleFoo_Tag x0: T type Baz_Body* = object tag*: StyleFoo_Tag x0: StylePoint[T] type StyleFoo*[T] = object tag*: StyleFoo_Tag foo*: Foo_Body bar*: Bar_Body baz*: Baz_Body type StyleBar_Tag* = int type StyleBar1_Body* = object x: int32 y: StylePoint[T] z: StylePoint[float32] u: proc (a0: int32): int32 {.cdecl.} type StyleBar2_Body* = object x0: T type StyleBar3_Body* = object x0: StylePoint[T] type StyleBar*[T] = object tag*: StyleBar_Tag bar1*: StyleBar1_Body bar2*: StyleBar2_Body bar3*: StyleBar3_Body type StyleBaz_Tag* = uint8 type Baz1_Body* = object tag*: StyleBaz_Tag x0: StyleBar[uint32] type Baz2_Body* = object tag*: StyleBaz_Tag x0: StylePoint[int32] type StyleBaz* = object tag*: StyleBaz_Tag baz1*: Baz1_Body baz2*: Baz2_Body type StyleTaz_Tag* = uint8 type StyleTaz1_Body* = object x0: StyleBar[uint32] type StyleTaz2_Body* = object x0: StyleBaz type StyleTaz* = object tag*: StyleTaz_Tag taz1*: StyleTaz1_Body taz2*: StyleTaz2_Body proc foo*(foo: ptr StyleFoo[int32], bar: ptr StyleBar[int32], baz: ptr StyleBaz, taz: ptr StyleTaz) {.importc: "foo".}