struct Foo {
static Func2<U>(u: U) : U {
return u;
}
static Func<T>(t: T): T {
foo: T = t;
return Foo.Func2(foo);
struct Program {
static Main(): int {
x: int = 4;
y: int = Foo.Func(x);
return x;