In Kotlin, how do you branch on multiple conditions where the conditions are evaluated lazily and can be some mix of general boolean expressions, null checks, and new variables