title: Kotlin checkNotNull vs requireNotNull
body: <p>As I learn new components in Kotlin, I came accross <code>requireNotNull</code> and <code>checkNotNull</code> but the only difference I've found is that <code>requireNotNull</code> can throw an <code>IllegalArgumentException</code> while <code>checkNotNull</code> can throw an <code>IllegalStateException</code>. Is this the only reason why there are two methods, or I'm missing some under-the-hood implementation detail?</p>