using System; public class Element[T] { public Item : T; public this ( item : T) { this.Item = item; } public GetItem ( retval : out T) : void { retval = Item; } public GetItem ( _a : int, _data : ref T) : T { Item; } public SetItem ( _data : T) : void { } } [Record] public class Foo[T] { mutable element : Element[Node]; public Test (_ : T) : Node { mutable node = element.Item; element.GetItem (out node); element.SetItem (node); element.GetItem (3, ref node); } public class Node { } } class X { static Main () : void { _ = Foo (Element (Foo.Node ())).Test (1); _ = Foo (Element (Foo.Node ())).Test ("a"); } } /* BEGIN-OUTPUT END-OUTPUT */