code: def CreateRetryTask(self):
      
      with self._lock:
        abandoned_task = self._GetTaskPendingRetry()
        if not abandoned_task:
          return None
  
        # The abandoned task is kept in _tasks_abandoned so it can be still
        # identified in CheckTaskToMerge and UpdateTaskAsPendingMerge.
  
        retry_task = abandoned_task.CreateRetryTask()
        logger.debug('Retrying task {0:s} as {1:s}.'.format(
            abandoned_task.identifier, retry_task.identifier))
  
        self._tasks_queued[retry_task.identifier] = retry_task
        self._total_number_of_tasks += 1
  
        self.SampleTaskStatus(retry_task, 'created_retry')
  
        return retry_task
docs: Creates a task that to retry a previously abandoned task.
  
      Returns:
        Task: a task that was abandoned but should be retried or None if there are
            no abandoned tasks that should be retried.