         task.resume()
     }
     
-    private func download(_ items: ArraySlice<(Item, Cached)>, _ callback: @escaping (Result) -> ()) {
+    private func download(_ items: ArraySlice<(Item, IsCached)>, _ callback: @escaping (Result) -> ()) {
         currentItemIndex = items.startIndex
         
         guard let first = items.first else {

import Foundation

private typealias Cached = Bool

public class Downloader {
    public let items: [Item]

        
        session = URLSession(configuration: .default, delegate: Delegate(downloader: self), delegateQueue: .main)
        
        func download(_ cached: [IsCached]) {
            assert(items.count == cached.count) // Always true for `Downloader` without bugs
            self.download(ArraySlice(zip(items, cached)), self.complete(with:))
        }
