;;;###autoload seems rather silly in elisp, since you typically want all interactive functions to be loaded. Flexibility is good I suppose.
Related Posts
Today I learnt that the original name for DOS was QDOS, for "Quick and Dirty Operating System"! https://en.wikipedia.org/wiki/DOS#QDOS
(Seems rather unfortunate that they dropped the Q.)
Go has an elegant approach to defining example functions, which are shown in docs as `main()` with the output: https://go.dev/blog/examples
ASTs typically discard comments, and that's usually what you want.
The only time (AFAICS) that preserving comments is useful is for writing a code formatter.
Could you write a formatter in terms of a list of lexemes? A CST is a non-trivial bit of code for one use case.