Valor de “retorno” de coincidencia de patrón

¿Por qué no es posible encadenar construcciones de coincidencia de patrones? Por ejemplo, lo siguiente es legal, si no tiene sentido,

val a = ADT(5)

val b = a match {
  case ADT(a) if a > 4 => ADT(a * 3)
  case ADT(a) => ADT(a + 1)
} 
b match {
  case ADT(a) if a > 13 => doSomething(a)
  case _ => {}
}

pero lo siguiente no es:

a match {
  case ADT(a) if a > 4 => ADT(a * 3)
  case ADT(a) => ADT(a + 1)
} match {
  case ADT(a) if a > 13 => doSomething(a)
  case _ => {}
}

Sospecho que es porque no debería hacerlo en primer lugar, pero en principio no veo por qué no es legal.

Respuestas a la pregunta(2)

Su respuesta a la pregunta