If you made your own type, you should implement Extend. It seems you agree that in this case you are best placed to do a good job.
And indeed if you have your own custom operation you want, it may well make sense for you to implement it on both your own types and stdlib types.
Great, we can agree on those :)