The type visitors should generate names relative to the current scope.
The generated references however are fully scoped names
Write some text to the output stream, replacing
's with
's and
indents.
Write the start of an entity, ending with a newline
Write the end of an entity, starting with a newline
Write a single entity on one line (though body may contain
newlines)
entity(
self,
__type,
__body,
* * __params)
Return but do not write the text for an entity on one line
reference takes two strings, a reference (used to look up the symbol and generated the reference),
and the label (used to actually write it)
Stuff common to functions and methods, contructors, destructors