1 - Improved parsing performance slightly
2 - Parsing exceptions provide detailed rror messages with possible root causes.
3 - Supporting inputs with null characters in the value ('\0')
3.1 - Parsers won't need to check for '\0' to test whether there's no more input to read
4 - Changing character and record counters to use long instead of int, as huge inputs will exceed Integer.MAX_VALUE