code: public synchronized void enqueue(DownloadTask task) {
          taskList.add(task);
          Collections.sort(taskList);
  
          if (!paused && !looping) {
              looping = true;
              startNewLooper();
          }
      }
docs: Enqueues the given task sometime in the serial queue. If the {@code task} is in the head of
  the serial queue, the {@code task} will be started automatically.