>>18You 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.
You don't have to "rewrite the code", it's just adding a few functions. If it's a 3rd-party-lib then it's their bloody fault for not making the required source available.
Importantly, with this technique, it does not have to be done. And there's no boilerplate if you don't write it in Java.
You still have to add the functionality you wanted, only you go through a vastly more convoluted way to do it. Even if it's not Java, the runtime cost is still there.
augment a foreign ADT with your own variants
Using needlessly abstract bullshite terminology does not make you seem any more intelligent.