docs: def _insert_job(self, job):
          """
          Insert a new job into the job queue. If the job queue is ordered, this job will be inserted at the correct
          position.
  
          :param job: The job to insert
          :return:    None
          """
  
          key = self._job_key(job)
  
          if self._allow_merging:
              if key in self._job_map:
                  job_info = self._job_map[key]
  
                  # decide if we want to trigger a widening
                  # if not, we'll simply do the merge
                  # TODO: save all previous jobs for the sake of widening
                  job_added = False
                  if self._allow_widening and self._should_widen_jobs(job_info.job, job):
                      try:
                          widened_job = self._widen_jobs(job_info.job, job)
                          # remove the old job since now we have a widened one
                          if job_info in self._job_info_queue:
                              self._job_info_queue.remove(job_info)
                          job_info.add_job(widened_job, widened=True)
                          job_added = True
                      except AngrJobWideningFailureNotice:
                          # widening failed
                          # fall back to merging...
                          pass
  
                  if not job_added:
                      try:
                          merged_job = self._merge_jobs(job_info.job, job)
                          # remove the old job since now we have a merged one
                          if job_info in self._job_info_queue:
                              self._job_info_queue.remove(job_info)
                          job_info.add_job(merged_job, merged=True)
                      except AngrJobMergingFailureNotice:
                          # merging failed
                          job_info = JobInfo(key, job)
                          # update the job map
                          self._job_map[key] = job_info
  
              else:
                  job_info = JobInfo(key, job)
                  self._job_map[key] = job_info
  
          else:
              job_info = JobInfo(key, job)
              self._job_map[key] = job_info
  
          if self._order_jobs:
              self._binary_insert(self._job_info_queue, job_info, lambda elem: self._job_sorting_key(elem.job))
  
          else:
              self._job_info_queue.append(job_info)