They are public in the Java SDK because other classes in the SDK's implementation needs to call them.  They are not, however, exposed to SDK end-users because SDK end-users do not have access to the implementations.

In other words, all Java SDK end-users interact with instances based on Interfaces - they don't 'see' (and can't easily access) any public method implementation that is not represented in an Interface - by design.

If there is a mechanism to hide these helper methods from end users but still make them available to yourself as you implementation other parts of the SDK, we should use that mechanism.

For example, in JavaScript, these 'public but really private' methods are named by convention, using an underscore ('_') prefix.  This says, "hey - you might see this in code, but don't think about calling it - it could be removed or change at any time.".  

What can we do in Ruby to achieve this same effect?