Campo anulable con getter no anulable

Estoy tratando de implementar getter no nulable con setter nullable y campo nulo.

  1. El parent campo puede ser nulo, lo que significa que el padre es this . Si parent no es nulo, el padre es el valor parent .
  2. Getter no admite las anulaciones ya que devuelve this o el parent
  3. Setter puede establecer valores anulables ya que puede eliminar el padre actual.

Intenté esto:

 @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "parent_id") var _parent: T? = null var parent: T get() = if (isParent) this as T else _parent!! set(value) { _parent = if (value == null) null else value.parent } 

No me gusta la variable _parent , pero tampoco ayuda con el setter, porque todavía no es anulable como el parent: T , por lo que la solución no funciona.