class UnifiedListenerManager {

    public synchronized void attachAndEnqueueIfNotRun(@NonNull DownloadTask task,
                                                      @NonNull DownloadListener listener) {
        attachListener(task, listener);

        if (!isTaskPendingOrRunning(task)) {
            task.enqueue(hostListener);
        }
    }

    public  UnifiedListenerManager();

}