In this chapter, we saw how coroutines are the power behind several powerful libraries, such as channels. In addition, we introduced solutions to several scenarios that we may encounter in real world usage, such as debugging, bridging blocking code with coroutines, and using callbacks with coroutines.
In chapter 16, Kotlin Serialization, the Kotlin serialization framework will be introduced. This is a powerful compile-time library that generates serialization and deserialization code so that we can marshall to and from arbitrary formats.