Why not the other way around?
declare the module private with an attribute (@private should be enough) and then to use it in your modules add a requirep keyword.
If you don’t requirep compilation fails.
The intent is clear and there cannot be confusion about using a private implementation that could break over time.
Eventually an optional @visible_to attribute could be used to restrict the “requirability” of the module.






















