### ProduceState
```kotlin
@Composable
fun ProduceState(viewModel: ProduceStateSampleViewModel) {
    val uiState by
        produceState<UiState<List<Person>>>(UiState.Loading, viewModel) {
            viewModel.people.map { UiState.Data(it) }.collect { value = it }
        }
    when (val state = uiState) {
        is UiState.Loading -> Text("Loading...")
        is UiState.Data ->
            Column {
                for (person in state.data) {
                    Text("Hello, ${person.name}")
                }
            }
    }
}
```
### ProduceStateAwaitDispose
```kotlin
@Suppress("UNUSED_VARIABLE")
@Composable
fun ProduceStateAwaitDispose(viewModel: ProduceStateSampleViewModel) {
    val currentPerson by
        produceState<Person?>(null, viewModel) {
            val disposable = viewModel.registerPersonObserver { person -> value = person }
            awaitDispose { disposable.dispose() }
        }
}
```