This is maybe more a philosophycal note due to my lack of proper experience with testing than a comment on this particular commit, but... Every time I find myself testing for the result of, or asserting about the call of "private" methods I wonder if we're not failing into testing more in the implementation realm instead of the behavior. And I feel like the need for making sure the implementation works is important, but also, from theory at least, having to change both implementation _and_ the test is a bit like duplication of the coding instead of relying on the testsuite to assert a behavioral contract.

maybe not the best place to ask about this, but I'm curious on your take on this issue and that "_" got me thinking about this long standing doubt. I guess balance is key.