3 suspend fun describe(identifier: String, continuation: Continuation): String { when (stateMachine.label) { 0 -> { // label 0 -> first execution val description = fetchDescription(identifier) continuation.description = description continuation.identifier = null stateMachine.label = 1 return } 1 -> { // label 1 -> resuming val enhancedDescription = enhanceDescription(description) continuation.enhancedDescription = enhancedDescription continuation.description = null stateMachine.label = 2 return } 2 -> { // label 2 -> resuming and terminating return continuation.enhancedDescription } } }