 indirect enum JSON {
     case null
     case string(String)
-    case double(Double)
-    case int(Int)
+    case number(Double)
     case bool(Bool)
     case object([(String, JSON)])
     case array([JSON])


    func testJSON() {
        expectSuccess(parser: JSONParser<StringReader>.json(),
                      input: " [  null  , true,false  ,\"test\", [{}, { }, { \" \"  : \"23\" ,\"\": 42}]] ",
                      expected: JSON.array([.null, .bool(true), .bool(false), .string("test"),
                                            .array([.object([]),
                                                    .object([]),
                                                    .object([
                                                        (" ", .string("23")),
                                                        ("", .int(42))
                                                        ])])]))
    }


        return true
    case (.string(let a), .string(let b)):
        return a == b
    case (.number(let a), .number(let b)):
        return a == b
    case (.bool(let a), .bool(let b)):
        return a == b
