 ///
 /// - warning: The implementation must be thread safe.
 public protocol DataCaching {
+    /// Retrieves data from cache for the given key.
     func cachedData(for key: String, _ completion: @escaping (Data?) -> Void) -> Cancellable
+
+    /// Stores data for the given key.
     func storeData(_ data: Data, for key: String)
 }
 

        guard let url = _url(for: key) else {
            return nil
        }
        return _wqueue.sync {
            return try? Data(contentsOf: url)
        }
    }

    private func _setData(data: Data, for key: Key) {

    /// by default.
    internal var trimRatio = 0.7

    /// The path for the directory managed by the cache.
    public let path: URL

    /// The number of seconds between each LRU sweep. 30 by default.
    /// The first sweep is performed right after the cache is initialized.
    ///
    /// Sweeps are performed in a background and can be performed in parallel
    /// with reading.
    public var sweepInterval: TimeInterval = 30

    // Staging
    private let _lock = NSLock()
