kotlin inversa boolean seguro de casting

Digamos que tengo un object Respuesta. Ahora me gustaría verificar una variable booleana, éxito, en Respuesta y hacer una devolución anticipada; la respuesta no es exitosa.

if(response == null || !response.success){ return; } //Java version 

Ahora me gustaría usar el cheque de security nulo de Kotlin como sigue

 if(response?.success ?: true){ return } 

Si no estoy equivocado, si la respuesta o el éxito son nulos, se devolverá verdadero dentro de la condición if. Sin embargo, si response.success no es nulo y es igual a verdadero, seguiremos regresando de la function, que no es lo que quiero. ¿Cómo corrijo esta condición?

    Creo que tienes que hacer

     if(!(response?.success ?: false)){ return; // null or failed } 

    que es equivalente a tu versión de Java

    pero tenga en count: si la versión de verificación null es más fácil de leer. Puedes usar eso en Kotlin también

    también puedes voltear la condición

     response?.success?.let { // do something when success } 

    ver el documento de operador de Elvis para más información