     public func extract<T : NodeInitializable>(
         path: [PathIndex])
         throws -> [String : [T]] {
-            let value = self[path] ?? .null
-            guard let object = value.nodeObject else {
+            let value = node[path]
+            guard let object = value?.nodeObject else {
                 throw NodeError.unableToConvert(node: value, expected: "\([String: [T]].self)")
             }
             return try object.mapValues { return try [T](node: $0) }

    public func extract<T : NodeInitializable>(
        path: [PathIndex])
        throws -> [String : [T]]? {
            guard let value = self[path] else { return nil }
            guard let object = value.nodeObject else {
                throw NodeError.unableToConvert(node: value, expected: "\([String: T].self)")
            }

    public func extract<T : NodeInitializable>(
        path: [PathIndex])
        throws -> T? {
            return try node[path].flatMap { try T(node: $0) }
    }

    public func extract<T : NodeInitializable>(
