PrintContext is produced by the LHS parser and printer, and

consumed by the RHS parser and printer
The role of PrintContext here (which probably needs to be renamed ReplacementContext or similar) is to take things that we learned or decided while parsing or printing a LHS and make it available to a function parsing or printing a RHS. 

But there's no reason to think a LHS and a RHS will want to be printed to the same stream.