Conjunto de miembros de class (valor) recibe un llamado recursivo … ¿por qué?

Tengo una class como la siguiente

class Employee(var person: String = "Employee", var worksAt: String = "California", var mood: String = "Happy") { var name: String = "Name: " set(value){ name = "Name: $value" } var allString: String private set init { this.allString = "$name works at $worksAt is $mood" this.person = "Person: " + person!! this.worksAt = "Work at: " + worksAt this.mood = "Mood :" + mood } override fun toString(): String { return this.name + "\n" + worksAt + "\n" + mood } } 

Cuando establezco el nombre

  val reaEmployee = Employee() reaEmployee.name = edt_main.text.toString() 

El nombre se establece recursivamente infinitamente … es decir, get Name: Name: .... $value … hasta que quede sin memory. ¿Qué he configurado incorrectamente?