type Counter { value: i32, fn read(self: ref) -> i32 { return self.value } } interface Readable { fn read(self: ref) -> i32 } fn readValue>(value: ref) -> i32 { return T.read(value) } pub fn main() -> Void { let counter: Counter = Counter { value: 42 } expect (readValue(&counter) == 42) }