Edit: see pron's comment below.
If you look at most of the recent additions to Java, they were in Kotlin from the beginning. This is no coincidence.
Are there stuff that kotlin's pattern-matching can't do?
> The primary issue I can think of comes from the lack of pattern matching. Kotlin’s language designer left out pattern matching intentionally because it is a complex feature whose use case is primarily for building compilers. However, modern Spark (post Catalyst / Tungsten) look a lot like compilers and as a result the internals would become more verbose if built using a language that doesn't support pattern matching.