         }
     }
     
+    /// Returns this enum's associated Bool value if it is one, `nil` otherwise.
     public var bool: Bool? {
         get {
             switch self {

    }
}

public enum JSONParseError: ErrorType {
    case Unknown
    case EmptyInput
    case UnexpectedCharacter(lineNumber: UInt, characterNumber: UInt)
    case UnterminatedString
    case InvalidUnicode
    case UnexpectedKeyword(lineNumber: UInt, characterNumber: UInt)
    case InvalidNumber(lineNumber: UInt, characterNumber: UInt)
    case EndOfFile
}

extension JSONParseError: CustomStringConvertible {
    public var description: String {
        switch self {
        case .Unknown:

        }
    }
    
    // MARK: - Parse a specific, expected type
    func nextObject() throws -> JSONValue {
        if scalar != leftCurlyBracket {
            throw JSONParseError.UnexpectedCharacter(lineNumber: lineNumber, characterNumber: charNumber)
