Emulation: change receiveChar to receiveChars
No functional change.
Instead of sending one char at a time through a virtual function, send all at once and process them in a loop inside the function. The perf improvement is not that big from this (+100ms), but it opens the path to more possible optimizations
(When seeing the diff, be sure to ignore whitespace to see actual changes)