This is a common problem - see
http://www.martinfowler.com/ieeeSoftware/published.pdf We wrote our own doclet that recognizes @published tags. In fact we wrote two: one that simply marks published members, and one that filters so that only published members are shown.
Lately we've begun to try a different approach, though: we've put the published API into its own module, mostly consisting of interfaces and factories. The actual implementation is placed into a different module and can add as many methods as needed.
In my opinion the latter works better. Only drawback is that in the implementation we sometimes need to cast from a published interface to an actual implementation to call a non-published method internally.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus