I'm almost of the mind to use F# or C# instead of waiting.
For one, they don't work for generic code where you want to discriminate. I.e., if you have a generic A or B type, you can't pattern match on it. And it's hard to add restrictions to the generic types such that it would work.
Such types sort of work in TypeScript, but TypeScript also has structural typing, meaning that it's designed for it.
Still, good to see Java joining the 21st century at least.
Same for C# with this new feature. Sum types (as I like to call tagged/type unions) are such an important tool to have, not having it makes languages resort to all kinds of abominations, e.g. exceptions, product types (= records, structs, etc) that are actually sum types, "null to signify something went wrong", etc.
Not having them from a language's start results in an std lib that does not use them and hence teaches new comer to the language a bad way to do it.