PrintContext is produced by the LHS parser and printer, and

consumed by the RHS parser and printer
Probably I am missing something. I don't quite follow the use of two vectors of PrinterContext(s) here. Especially, seems only the first element of PrintersIn is used after invoking the parsing function, i.e., in souper::ParseReplacement::

              assert(Printers.size() == 1);
              Pr = Printers[0];

Furthermore, seems PrintersOut are not used anywhere else except the parser? Can we only pass a reference to PrintContext to the Parser constructor?