This makes the experience of custom collection implementers a bit confusing because some operations (e.g. map and flatMap) can be implemented by forwarding to the helpers (strictOptimizedMap and strictOptimizedFlatMap, respectively, for those operations), but some others have to be re-implemented manually (e.g., appended and prepended). You can see an example here.
We should provide helpers for all the methods that are supposed to be overridden.