         
         let thisKey = keys ?? []
         
-        resumeCheck: if var keys = keys {
+        resumeCheck: if let matcher = matcher, let pos = searchTree[position: matcher] {
+            position = pos
+        } else if var keys = keys {
             if let pos = searchTree[position: keys] {
                 if searchTree[keys]?.fullyIndexed == true {
                     return nil

    @discardableResult
    internal func index(recursive keys: [IndexKey]? = nil, lookingFor matcher: [IndexKey]?, offset: Int = 0, levels: Int? = nil) -> ElementMetadata? {
        if searchTree.fullyIndexed {
            return nil
        }
        

        
        if let keys = keys {
            self.searchTree[keys]?.fullyIndexed = true
        } else if levels == nil {
            self.searchTree.fullyIndexed = self.searchTree.storage.values.reduce(true) { $0.1.fullyIndexed && $0.0 }
        }
        
//        unset = true
