A pretty-printer for the abstract syntax of Java, for ATJ's implementation.
This pretty-printer produces text
in the form of msgp and msg-listp values.
The latter generally consist of lines of text;
that is always the case at the top level,
i.e. a Java compilation unit is turned into a list of lines.
Some pretty-printing functions produce msgp values
that other pretty-printing functions
incorporate into larger text.
In the pretty-printing functions,
we consistently use the result names
A separate function writes the lines for a Java compilation unit to an output channel, which is associated to a file. The newline characters are added to this function; they do not appear in the msgp and msg-listp values.