package foo:foo; interface lists { list-u8-param: func(x: list); list-u16-param: func(x: list); list-u32-param: func(x: list); list-u64-param: func(x: list); list-s8-param: func(x: list); list-s16-param: func(x: list); list-s32-param: func(x: list); list-s64-param: func(x: list); list-f32-param: func(x: list); list-f64-param: func(x: list); list-u8-ret: func() -> list; list-u16-ret: func() -> list; list-u32-ret: func() -> list; list-u64-ret: func() -> list; list-s8-ret: func() -> list; list-s16-ret: func() -> list; list-s32-ret: func() -> list; list-s64-ret: func() -> list; list-f32-ret: func() -> list; list-f64-ret: func() -> list; tuple-list: func(x: list>) -> list>; string-list-arg: func(a: list); string-list-ret: func() -> list; tuple-string-list: func(x: list>) -> list>; string-list: func(x: list) -> list; record some-record { x: string, y: other-record, z: list, c1: u32, c2: u64, c3: s32, c4: s64, } record other-record { a1: u32, a2: u64, a3: s32, a4: s64, b: string, c: list, } record-list: func(x: list) -> list; record-list-reverse: func(x: list) -> list; variant some-variant { a(string), b, c(u32), d(list), } variant other-variant { a, b(u32), c(string), } variant-list: func(x: list) -> list; type load-store-all-sizes = list>; load-store-everything: func(a: load-store-all-sizes) -> load-store-all-sizes; } world the-lists { import lists; export lists; }