On a short note: I have been writing unit tests with JUnit and Java for ages. Completing matchers and assertions always was a bit of a pain. Over the time, Java completion for static methods improved to become less cumbersome. Not with Kotlin! That really works well right out of the box, like it's supposed to be! Completion feels really great with top level functions. It even works a lot better on Hamkrest than on Hamcrest. That alone might be worth switching to Kotlin 🙂