Jak wywnioskować odpowiedni parametr typu z typu projekcji?

Mam pewne kłopoty ze Scalą, aby wywnioskować właściwy typ z projekcji typu.

Rozważ następujące:

trait Foo {
  type X
}

trait Bar extends Foo {
  type X = String
}

def baz[F <: Foo](x: F#X): Unit = ???

Następnie dobrze się kompiluje:

val x: Foo#X = ???    
baz(x)

Ale poniższe nie skompilują się:

val x: Bar#X = ???    
baz(x)

Scala widzi „podstawowy typ String”x, ale utracił informacjex jestBar#X. Działa dobrze, jeśli zaznaczę typ:

baz[Bar](x)

Czy istnieje sposób na to, aby Scala wyprowadził odpowiedni parametr typu dlabaz?
Jeśli nie, jaka jest ogólna odpowiedź, która uniemożliwia to?

questionAnswers(2)

yourAnswerToTheQuestion