code: def GetTaskPendingMerge(self, current_task):
      
      next_task = self._tasks_pending_merge.PeekTask()
      if not next_task:
        return None
  
      if current_task and next_task.merge_priority > current_task.merge_priority:
        return None
  
      with self._lock:
        next_task = self._tasks_pending_merge.PopTask()
  
      self._tasks_merging[next_task.identifier] = next_task
      return next_task
docs: Retrieves the first task that is pending merge or has a higher priority.
  
      This function will check if there is a task with a higher merge priority
      than the current_task being merged. If so, that task with the higher
      priority is returned.
  
      Args:
        current_task (Task): current task being merged or None if no such task.
  
      Returns:
        Task: the next task to merge or None if there is no task pending merge or
            with a higher priority.