 
         while let (byte, index) = reader.read() {
             switch byte {
-            case UInt8(ascii: " "), UInt8(ascii: "\r"), UInt8(ascii: "\n"), UInt8(ascii: "\t"):
+            case ._space, ._return, ._newline, ._tab:
                 continue
             default:
                 throw JSONError.unexpectedCharacter(ascii: byte, characterIndex: index)

            case UInt8(ascii: "-"), UInt8(ascii: "0") ... UInt8(ascii: "9"):
                let number = try parseNumber()
                return .number(number)
            case UInt8(ascii: " "), UInt8(ascii: "\r"), UInt8(ascii: "\n"), UInt8(ascii: "\t"):
                continue
            default:
                throw JSONError.unexpectedCharacter(ascii: byte, characterIndex: index)


                pastControlChar = .expOperator
                numbersSinceControlChar = 0
            case ._space, ._return, ._newline, ._tab:
                guard numbersSinceControlChar > 0 else {
                    throw JSONError.unexpectedCharacter(ascii: byte, characterIndex: index)
                }

                return self.reader.makeStringFast(self.reader[stringStartIndex ..< index])
            case ._comma, ._closebracket, ._closebrace:
                guard numbersSinceControlChar > 0 else {
                    throw JSONError.unexpectedCharacter(ascii: byte, characterIndex: index)
                }
