I don't think it's worth it to have separate classes for base classes and mixins, especially when they only differ by either having a abstract method or a constructor. It's extra load on programmers to browse the libraries, discover the correct choice, its potentially extra cost in compiled app size, all for a benefit that's probably never going to be needed.

Consider that a main reason for delegating collections is to give an object to a receiver that's expecting one of the collection types. Such code would not be expecting one of the delegating collections, and very little or no code out there besides subclasses would ever depend on the degators, so no one would be in a position to call `delegate`.

I'd rather err on this side of keeping things simple and less strict until it's shown that it isn't sufficient.