sealed class Foo { data class Bar(val value: Int): Foo() data class Baz(val value: Int) : Foo() } suspend fun main() { val foos = flowOf(Bar(1), Baz(1)) .broadcastIn(GlobalScope) .asFlow() val barValues = foos.filterIsInstance().map { "$it" } val bazValues = foos.filterIsInstance().map { "$it" } val values = flowOf(barValues, bazValues).flattenMerge() values.collect { println(it) } }