When you declare a class, ObjectPascal rules say that default ("implicit") visibility of members is public, unless the class is declared within {$M+} state or the class inherits from another class declared in {$M+} state (like TPersistent) – then it's published.

However, pasdoc cannot absolutely correctly implement this behavior (see comments at bug 1221900 for large reasoning; roughly speaking, only the compiler knows whether class inherits from another class declared in {$M+} state).

You can control using the command-line option --implicit-visibility how exactly pasdoc handles members with "implicit visibility":

ImplicitVisibilityOption (last edited 2007-10-28 22:57:05 by localhost)