record BadParse {} instance Exception = BadParse; foo(x: Int) Int { throw BadParse(); } overload foo(x: Float) Int { return 5; } variant Foo = Int | Float; fooFoo(x: Foo) = foo(*x); main() { var x = Foo(3); fooFoo(x); }