  
  `TaskQueue` has a custom delegate which can be used to monitor certain events
  in `TaskQueue` lifecycle. See `TaskQueueDelegate` for more information
-
-*/
+ 
+ */
 public class TaskQueue: NSOperationQueue {
     
     /**

    public func addTasks<T>(tasks: [Task<T>]) {
        _ = tasks.map { addTask($0) }
    }
    
    /**
     Retries task execution. Method will decrease task retry count, set task
     state to `Initialized` and add it to the queue again.
     
     - Parameter task: Task to be retried
    */
    func retry<T>(task task: Task<T>) {
        do {
            try task.decreaseRetryCount()

            task.addObserver(retryObserver)
        }
        
        _ = task
            .conditions
            .flatMap { $0.dependency(forTask: task) }
            .map { task.addDependency($0); addOperation($0) }
        
        delegate?.didAdd(task: task, toQueue: self)
        
        addOperation(task)
    }
    
    public override func addOperation(operation: NSOperation) {
        super.addOperation(operation)
        
        if operation.respondsToSelector(#selector(Task<Any>.willEnqueue)) {
            operation.performSelector(#selector(Task<Any>.willEnqueue))
        }
    }
    
    /**
