strictly more powerful than what Java currently calls pattern matching, not nearly as powerful as eg Scala or Haskell
But what example would you have to demonstrate it's more powerful? As a matter of fact, Kotlin smart-cast approach can't tolerate mutability because it can't guarantee safety, yet Java guarantees.