Firstly, this demo is merely subjective and can be considered as more of a convention rather than the "best"/"only" solution with regards to achieving the goal.

Normally, when writing classes, especially ones that are meant to be used as lib, there are cases that you would need to define so-called "private" methods which act as helper subroutines for some of the public methods exposed by the API. Commonly, to imply that these method(s) are for internal use only, the dev would usually use naming conventions(underscore prefix, etc.), "warning" comments and omit the usage of these methods from the documentation. These usually are enough but just for fun, I will be demonstrating a way to define so-called "private" methods and/or properties in a manner that it would be easy for the dev to maintain/organize the code and most importantly encapsulate the subroutines from the caller(be it a person or object(instance/class)). You may have noticed in the documentation under function objects(not to be confused with Func objects) -- (I can't provide a link, it seems that the online doc is temporarily unavailable), a way to define custom callable objects. This method has always been available prior v1.1.20, however, with the introduction of Func.Call(), we can say that there is now a more standardized way of defining custom "function objects". The trick is to convert the "public" methods which use/call the "private" methods into nested classes, implement these nested classes as callable objects by putting its routine in the .Call() method and then define the "private" helper methods as methods of these nested callable classes. But before you do this you would first need to define a base object from which all your "callable" objects will derive from. The base object should be defined as follows(similar to the one in the AHK documentation):