struct Foo { static Func2(u: U) : U { return u; } static Func(t: T): T { foo: T = t; return Foo.Func2(foo); } } struct MemoryBlock { start: MemoryAddress; capacity: uint; AddressOf(count: uint): MemoryAddress { return start + (count * @sizeof()); } } struct Program { static Main(): int { x: int = 4; y: int = Foo.Func(x); block: MemoryBlock; addr: MemoryAddress = @malloc(y); @free(addr); return x; } }