The most conservative thing to do is to share the implementation
(using the abstraction mechanisms provided by the Scala colletions),
but keep separate instances that delegate to that shared impl.
In version 6, I tried to share a single instance for many subtypes in
the collections hierarchy, with limited success. (This was a bigger
problem for Equal than Show).
-jason