Well, think of it this way.
```
abstract class A {
  type Foo <: String
  val s: Foo
}
class B {
  // Should I be able to write this?
  def f1(x: A) = x.s.length
  // Or should I have to write this?
  def f2(x: A { type Foo <: String }) = x.s.length
}
```