The cast tells you that you're ignoring the provided builder.

See the implementation in `List`:

```
override def +:[B >: A, That](elem: B)(implicit bf: CanBuildFrom[List[A], B, That]): That = bf match {
    case _: List.GenericCanBuildFrom[_] => (elem :: this).asInstanceOf[That]
    case _ => super.+:(elem)(bf)
  }
```

We still have to cast, but the semantics are correct.