Scala: como se referir ao tipo de uma classe de extensão em uma superclasse?

Existe uma maneira de definir um tipoT nos Pais de tal forma queT sempre se tornará o tipo real da classe de extensão (neste casoChild)?

NoParent, Quero impor / declararT ser sempre do tipo extensível, como se eu tivesse escritotype T="type_of_the_extending_class" em cada classe de extensão real sem escrever as linhastype T=Child1 noChild1 etc.

Portanto, o método Child1 deve aceitar apenas objetos Child1 como parâmetro e o método Child2 deve aceitar apenas objetos Child2. Existe uma maneira mais simples de aplicar isso? Existe uma maneira sem escrevertype T=ChildX em cadaChildX classe ? Existe uma maneira sem esse clichê?

Estive procurando uma solução nos livros Scala, mas não encontrei nenhuma.

abstract class Parent{
  type T<:Parent
  def method(t:T) 
}

class Child1 extends Parent{
  type T=Child1
  override def method(t:T)=t.child1method
  def child1method=println("child1's method")
}

class Child2 extends Parent{
  type T=Child2
  override def method(t:T)=t.child2method
  def child2method=println("child2's method")
}

questionAnswers(1)

yourAnswerToTheQuestion