During this chapter we have seen how Kotlin handles null safety in a safe way, and how reflection can be used to inspect code at runtime. Several useful Kotlin annotations have been introduced and their effect on the compiler.
In the next chapter, we will begin a discussion on Kotlin's advanced type system and how we can write generic code.