     /// - throws: One of the `JSON.Error` cases thrown by `decode(_:type:)`.
     /// - seealso: `JSON.decode(_:type:)`
     public func int(first: PathFragment, _ rest: PathFragment...) throws -> Swift.Int {
-        return try decodedAtPath(first, rest)
+        return try mapAtPath(first, rest) { try $0.int() }
     }
 
     /// Retrieves a `String` from a path into JSON.

    /// - throws: One of the `JSON.Error` cases thrown by `decode(_:type:)`.
    /// - seealso: `JSON.decode(_:type:)`
    public func bool(first: PathFragment, _ rest: PathFragment...) throws -> Swift.Bool {
        return try decodedAtPath(first, rest)
    }

    // MARK: Complex member unpacking

    /// Retrieves a `[JSON]` from a path into JSON.
    /// - parameter path: 0 or more `String` or `Int` that subscript the `JSON`

    /// - throws: One of the `JSON.Error` cases thrown by `decode(_:type:)`.
    /// - seealso: `JSON.decode(_:type:)`
    public func array(first: PathFragment, _ rest: PathFragment...) throws -> [JSON] {
        return try mapAtPath(first, rest) { try $0.array() }
    }

    /// Attempts to decodes many values from a desendant JSON array at a path
