flags flag32 {
  b0, b1, b2, b3, b4, b5, b6, b7,
  b8, b9, b10, b11, b12, b13, b14, b15,
  b16, b17, b18, b19, b20, b21, b22, b23,
  b24, b25, b26, b27, b28, b29, b30, b31,
}

flags flag64 {
  b0, b1, b2, b3, b4, b5, b6, b7,
  b8, b9, b10, b11, b12, b13, b14, b15,
  b16, b17, b18, b19, b20, b21, b22, b23,
  b24, b25, b26, b27, b28, b29, b30, b31,
  b32, b33, b34, b35, b36, b37, b38, b39,
  b40, b41, b42, b43, b44, b45, b46, b47,
  b48, b49, b50, b51, b52, b53, b54, b55,
  b56, b57, b58, b59, b60, b61, b62, b63,
}

list-param: func(a: list<u8>)
list-param2: func(a: string)
list-param3: func(a: list<string>)
list-param4: func(a: list<list<string>>)
list-result: func() -> list<u8>
list-result2: func() -> string
list-result3: func() -> list<string>

list-minmax8: func(a: list<u8>, b: list<s8>) -> tuple<list<u8>, list<s8>>
list-minmax16: func(a: list<u16>, b: list<s16>) -> tuple<list<u16>, list<s16>>
list-minmax32: func(a: list<u32>, b: list<s32>) -> tuple<list<u32>, list<s32>>
list-minmax64: func(a: list<u64>, b: list<s64>) -> tuple<list<u64>, list<s64>>
list-minmax-float: func(a: list<float32>, b: list<float64>) -> tuple<list<float32>, list<float64>>

list-roundtrip: func(a: list<u8>) -> list<u8>

string-roundtrip: func(a: string) -> string

unaligned-roundtrip1: func(a: list<u16>, b: list<u32>, c: list<u64>, d: list<flag32>, e: list<flag64>)

record unaligned-record { a: u32, b: u64 }
unaligned-roundtrip2: func(a: list<unaligned-record>, b: list<float32>, c: list<float64>, d: list<string>, e: list<list<u8>>)
