¿Polimorfismo F-Bound con tipos abstractos en lugar de tipos de parámetros?

¿Cómo convierto el siguiente polimorfismo F-Bound a código usando tipos abstractos?

trait Organism[Self <: Organism[Self]] { self: Self =>
  def reproduceWith(org:Self):Boolean
}

class Amoeba extends Organism[Amoeba] {
  def reproduceWith(org:Amoeba) = //..code
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta