convertir datasnaphot de Java a Kotlin

Estoy al comienzo de Kotlin, así que quiero convertir esta parte del código:

Query query = reference.child("users"); query.addValueEventListener(new ValueEventListener() { public void onDataChange(DataSnapshot dataSnapshot) { Users users = null; for (DataSnapshot d: dataSnapshot.getChildren()) { users = d.getValue(Users.class); if (users.getEmail().equals(mail)) { photoUri = users.getPhotos(); nameSurname = users.getNome() + " " + users.getCognome(); break; } } if (photoUri != null) { Glide.with(MainActivity.this) .load(photoUri) .transform(new CircleTransform(MainActivity.this)) .into(profile); } else { Glide.with(MainActivity.this) .load(graphic) .transform(new CircleTransform(MainActivity.this)) .into(profile); } } public void onCancelled(DatabaseError databaseError) { } }); 

a Kotlin. Así que hice este código:

 class DataReferenceService @Inject constructor(private var auth: FirebaseDatabase) : MainContract.DatabaseRepository,ValueEventListener { var mail: String? = null override fun getImageProfile(mail: String?) { this.mail = mail val query = auth.reference.child("users") query.addValueEventListener(this) } override fun onCancelled(p0: DatabaseError?) { } override fun onDataChange(data: DataSnapshot?) { var user: User? = null data?.children?.forEach { child -> getPhotos(child) } } fun getPhotos(child: DataSnapshot) { val user = child.getValue(User.class) // name expected, why ??? } } 

el problema es indicar en el comentario, ¿por qué no lo convierte? ¿Hay alguna otra forma de hacerlo? Quiero utilizar takeIf{} pero no entiendo cómo usarlo.

Gracias