WTF? What is so bloody "hard" about doing something that has to be done anyway?
You have to rewrite the code. That isn't always an option, and when it is it's insane if that code is in a third party library. Importantly, with this technique, it
does not have to be done. And there's no boilerplate if you don't write it in Java.
How is this not "convoluted abstraction"? It's deliberately being obtuse about a practically non-existent problem and then making an unnecessarily complex way of solving it.
It's a very real problem when you need to augment a foreign ADT with your own variants. It's not obtuse, it's just a typical typeclass in the category of what's your fucking problem can you even read?