Coincidir con clases de casos múltiples en scala

Estoy haciendo una comparación con algunas clases de casos y me gustaría manejar dos de los casos de la misma manera. Algo como esto:

abstract class Foo
case class A extends Foo
case class B(s:String) extends Foo
case class C(s:String) extends Foo


def matcher(l: Foo): String = {
  l match {
    case A() => "A"
    case B(sb) | C(sc) => "B"
    case _ => "default"
  }
}

Pero cuando hago esto me sale el error:

(fragment of test.scala):10: error: illegal variable in pattern alternative
    case B(sb) | C(sc) => "B"

Puedo hacerlo funcionar o elimino los parámetros de la definición de B y C, pero ¿cómo puedo hacer coincidir con los parámetros?

Respuestas a la pregunta(3)

Su respuesta a la pregunta