It is public in the derived classes because it is the thing people will likely modify (if they modify anything at all). Will this class show up in the docs if it is private?

I'm half tempted to not bother including these in the base class at all, since it is meant to be a private implementation detail...