         return true
     case (.string(let a), .string(let b)):
         return a == b
-    case (.double(let a), .double(let b)):
-        return a == b
-    case (.int(let a), .int(let b)):
+    case (.number(let a), .number(let b)):
         return a == b
     case (.bool(let a), .bool(let b)):
         return a == b

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


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

