             let urls = self.directoryContents(with: [.contentAccessDateKey, .fileSizeKey])
 
             typealias FileAccessTimeSizeTuple = (accessTime: TimeInterval, size: UInt64)
-            typealias FilePathAttributesTuple = (path: String, fileAttr: FileAccessTimeSizeTuple)
-
-            let fileAttributes: [FilePathAttributesTuple] = urls.map {
+            typealias FileURLAttributesTuple = (url: URL, fileAttr: FileAccessTimeSizeTuple)
+
+            let fileAttributes: [FileURLAttributesTuple] = urls.map {
                 let resourceValue = $0.resourceValues(forKeys: [.contentAccessDateKey, .fileSizeKey])
 
-                return ($0.path, (resourceValue.contentAccessDate?.timeIntervalSince1970 ?? 0, UInt64(resourceValue.fileSize ?? 0)))
+                return ($0, (resourceValue.contentAccessDate?.timeIntervalSince1970 ?? 0, UInt64(resourceValue.fileSize ?? 0)))
                 }.sorted { $0.fileAttr.accessTime > $1.fileAttr.accessTime }
 
             var evictSize: UInt64 = 0

    }

    private func directoryContents(with keys: [URLResourceKey]) -> [URL] {
        guard let url = URL(string: configuration.path) else {
            assertionFailure("💥 failed to create url with path 👉 `\(configuration.path)`")
            return []
        }

        guard let urls = try? fileManager.contentsOfDirectory(at: url,
                                                              includingPropertiesForKeys: keys,

                return true
            }

            filesToRemove.forEach {
                guard let _ = try? self.remove(fileAtURL: $0.url, size: $0.fileAttr.size) else {
                    assertionFailure("💥 Failed to remove file with path 👉 \($0)")

                    return print("💥 Failed to remove file with path 👉 \($0)")
