public class BearerTokens( public val accessToken: String, public val refreshToken: String? ) fun getTokens(): BearerTokens? { val accessToken = ... val refreshToken = ... return if (accessToken != null && refreshToken != null) { BearerTokens(accessToken, refreshToken) } else { null } } fun getRefreshToken(): Pair { val bearerTokens = getTokens() // version 1: // Expected: Pair, got Pair /* if (bearerTokens?.refreshToken != null) { return "Bearer" to bearerTokens.refreshToken } */ // version 2: // Expected: Pair, got Pair /* bearerTokens?.refreshToken?.let { return "Bearer" to bearerTokens.refreshToken } */ // version 3: works /* bearerTokens?.refreshToken?.let { refreshToken -> return "Bearer" to refreshToken } */ // if no token, return basic auth return getBasicAuthorization() }