abstract class Test0 { def visit(f: Int => Unit): Boolean def visit(f: Int => String): Boolean } trait Test { type TypeA <: TraitA; type TypeB <: TypeA with TraitB; def f(node : TypeA) : Unit; def f(brac : TypeB) : Unit; trait TraitA; trait TraitB; }