             "float": 32.1 as Float,
             "bool": true,
             "nested": [ "value": "The nested value" ],
+            "group": [ "name": "Himotoki", "floor": 12 ],
         ]
 
         // Succeeding case

        XCTAssert(person?.float == 32.1)
        XCTAssert(person?.bool == true)
        XCTAssert(person?.nested == "The nested value")

        // Failing case
        JSON["bool"] = nil

        float = e.valueOrFail("float")
        bool = e.valueOrFail("bool")
        nested = e.valueOrFail("nested.value")
        group = e.valueOrFail("group")

        if !e.isValid {
            return nil
        }
    }
}

struct Group: Decodable {
    let name: String
    let floor: Int

    init?(_ e: Extractor) {
        name = e.valueOrFail("name")
        floor = e.valueOrFail("floor")

        if !e.isValid {
            return nil
        }
    }
}
