more clearly differentiate between building the AST that is about to be written, and converting that AST into the actual output we write into a given output target