How to join existing and new parametric types under a common abstract type?

Perhaps this would solve your problem:

You would still have to wrap your objects at the time of construction. But there would be no need to redefine methods.