¿Cómo restringir los mensajes de actores a tipos específicos?

In Akka, ¿hay alguna manera de restringir los mensajes a los actores para que sean de un tipo estático específico que no sea el uso de las API "Typed Actor" que usan un modelo de programación de estilo RPC?

¿Puedo usar el estilo de pasar mensajes con Akka sin tirar la seguridad de tipo estático en los límites del actor?

Por ejemplo, me gustaría usar un código como este:

sealed abstract class FooMessage
case object Foo extends FooMessage
case object Bar extends FooMessage

class FooActor extends Actor[FooMessage] {
  def receive = {
    case Foo => () // OK

    // Would raise a compiler error:
    // case s: String => error("Can't happen, String is not a subtype of FooMessage") 

  }
}

val fooActor = actorOf[FooActor]
fooActor ! Foo // OK

// Won't compile:
fooActor ! "Hello"

Tal vez uno tendría que extender algún rasgo base o tener una construcción comoEither para permitir mensajes a nivel del sistema Exit, etc.).

Respuestas a la pregunta(4)

Su respuesta a la pregunta