type Helper { fn head(items: ref<[N]T>) -> T { return items[0] } } type FixedVec { items: [N]T, fn first(self: ref) -> T { return self.items[0] } } fn forwardHead(items: ref<[N]T>) -> T { return Helper.head(items) } fn forwardFirst(items: ref>) -> T { return items.first() } pub fn main() -> Void { let values: [3]i32 = [1, 2, 3] let vec: FixedVec = FixedVec { items: [4, 5, 6] } let first: i32 = forwardHead(&values) let second: i32 = forwardFirst(&vec) expect (first == 1 && second == 4) }