#define MY_ASSERT(...) do { } while (0) type I* {.incompleteStruct.} = object type H_Tag* = uint8 type H_Foo_Body* = object x0: int16 type H_Bar_Body* = object x: uint8 y: int16 type H* = object tag*: H_Tag foo*: H_Foo_Body bar*: H_Bar_Body type J_Tag* = uint8 type J_Foo_Body* = object x0: int16 type J_Bar_Body* = object x: uint8 y: int16 type J* = object tag*: J_Tag foo*: J_Foo_Body bar*: J_Bar_Body type K_Tag* = uint8 type K_Foo_Body* = object tag*: K_Tag x0: int16 type K_Bar_Body* = object tag*: K_Tag x: uint8 y: int16 type K* = object tag*: K_Tag foo*: K_Foo_Body bar*: K_Bar_Body proc foo*(h: H, i: I, j: J, k: K) {.importc: "foo".}