import io:* obj Traited(Traits) {} fun funcID(genFun: fun():T):T { return genFun() } fun retInt():int { return 9 } fun doThePrint(func: fun(T):void):void { func(10) } fun printInt(it:int):void { println(it) } fun ptrFn(ptr: *T):void { println(*ptr) } fun traitAware(it:*T):void { println("Does not have Traits") } fun traitAware(it:*T):void { println("Does have Traits") } fun main():int { var a = 8 ptrFn(&a) println(funcID(retInt)) doThePrint(printInt) var t:Traited traitAware(&t) traitAware(&a) return 0 }