Improve Collection extensibility

Make the only `private` method `protected` so it can be used in other implementations.