         }
     }
     
-    private func decodedAtPath<Decoded: JSONDecodable>(first: PathFragment?, _ rest: [PathFragment], ifNotFound: Swift.Bool, ifNull: Swift.Bool) throws -> Decoded? {
+    @transparent private func decodedAtPath<Decoded: JSONDecodable>(first: PathFragment?, _ rest: [PathFragment], ifNotFound: Swift.Bool, ifNull: Swift.Bool) throws -> Decoded? {
         return try optionalAtPath(first, rest, ifNotFound: ifNotFound, ifNull: ifNull, getter: Decoded.init)
     }
 


    // MARK: Simple member unpacking
    
    private func fetchValueAtPath<Value>(first: PathFragment?, _ rest: [PathFragment], detectNull: Swift.Bool = false, @noescape getter: JSON throws -> Value) throws -> Value {
        let json = try valueAtPath(first, rest, detectNull: detectNull)
        return try getter(json)
    }
    
    private func decodedAtPath<Decoded: JSONDecodable>(first: PathFragment?, _ rest: [PathFragment]) throws -> Decoded {
        return try fetchValueAtPath(first, rest) { try $0.decode() }
    }



    // MARK: Member unpacking with fallback
    
    @transparent private func decodedAtPath<Decoded: JSONDecodable>(first: PathFragment?, _ rest: [PathFragment], @noescape or fallback: () -> Decoded) throws -> Decoded {
        return try decodedAtPath(first, rest, ifNotFound: true, ifNull: false) ?? fallback()
    }

