PrintContext is produced by the LHS parser and printer, and

consumed by the RHS parser and printer
Probably so. I wasn't sure how much encapsulation to go for. I've noticed that I tend to prefer more function calls and Peter tends to prefer more code duplication.