It was marked @private consciously for 2 reasons:

a) If it's not intended to be a conscious customization point, it's better to leave it @private so the library has the ability to modify implementations at a later point (which is the reason the underlying impl is private also).

b) The actual method which it's overriding is @private. Ultimately we hope to remove this override, and maybe change the underlying method also, so we don't want real-world code relying on this method being overridable.

Of course if there's a real use case which warrants making it protected for customization purposes, we can revisit (or maybe provide a more appropriate public/protected hook), but we shouldn't open it up prematurely.