Agreed. When you make an exception for developers to rely on a private method, you "promote" an implementation detail to its public interface. Now you can never remove the method, change its signature, or change its behavior. Nevermind that when the bug in the public method is fixed, you now have two methods to accomplish the same task. You've introduced cruft, or legacy code you need to maintain. Ick.