Make all 'expected's consistent; compiler needs to catch up.
Mildly harrowing conversion ScannerState -> StringBuffer.
Completely replace ScannerState with Buffer.
Add FileBuffer.  Although, this will be trickier than it looks.