anchor.diff:      end,
   
       case atm_lane_execution:update(CurrLaneIndex, Diff, AtmWorkflowExecution) of
  -        {ok, NewAtmWorkflowExecution} -> {true, NewAtmWorkflowExecution};
  -        {error, no_retries_left} -> false
  +        {ok, NewAtmWorkflowExecution} ->
  +            schedule_current_lane_run_retry(AtmExceptionStoreId, NewAtmWorkflowExecution);
  +        {error, no_retries_left} ->
  +            {ok, AtmWorkflowExecution}
       end.
   
   
   %% @private
  --spec schedule_lane_run_retry(atm_store:id(), atm_workflow_execution:record()) ->
  -    {ok, atm_workflow_execution:record()}.
  -schedule_lane_run_retry(AtmExceptionStoreId, AtmWorkflowExecution = #atm_workflow_execution{
  +-spec schedule_current_lane_run_retry(atm_store:id(), atm_workflow_execution:record()) ->
  +    {ok, atm_workflow_execution:record()} | errors:error().
  +schedule_current_lane_run_retry(AtmExceptionStoreId, AtmWorkflowExecution = #atm_workflow_execution{
       curr_lane_index = CurrLaneIndex,
       curr_run_num = CurrRunNum
   }) ->
  
positive.code: 
  
  %% @private
  -spec acquire_retry_permission(atm_workflow_execution:record()) ->
      {true, atm_workflow_execution:record()} | false.
  acquire_retry_permission(AtmWorkflowExecution = #atm_workflow_execution{
      curr_lane_index = CurrLaneIndex
  }) ->
      Diff = fun
  
negative.code:         ?FAILED_STATUS when AbortingReason == undefined ->
              % lane run can be automatically retried only if all items finished execution but
              % some of them failed (direct transition from ?ACTIVE_STATUS to ?FAILED_STATUS)
              try_to_schedule_current_lane_run_retry(AtmExceptionStoreId, AtmWorkflowExecution2);
          ?FINISHED_STATUS when CurrAtmLaneIndex < AtmLanesCount ->
              schedule_next_lane_run(AtmWorkflowExecution2);
          _ ->
  