# Test overload on both generic params and normal params class F def foo(t as T) as int return 31 def foo(t as T, u as U) as int return 37 def foo(i as int) as int return 11 def foo(i as int, j as int) as int return 17 class T def main is shared f = F() assert f.foo(0) == 11 assert f.foo(0, 0) == 17 assert f.foo('.') == 31 assert f.foo('.', F()) == 37