The mere fact that we're increasing visibility of methods purely for testing purposes would indicate that our design could use some tweaks (because in theory, we should have been able to provide sufficient unit tests via the publicly exposed methods.  Now, someone can't make any *internal* modifications without breaking unit tests (i.e. renaming the non-public method, adding another parameter, etc. even if it doesn't modify the public contract.