anchor.diff:      description => description(),
       finish_callback => job_finish_callback()
   }.
  +
   -type master_job_extended_args() :: #{
       task_id => id(),
       master_job_starter_callback => master_job_starter_callback()
   }.
   -type master_job_starter_callback() :: fun(([job()]) -> ok).
  --type job_finish_callback() :: fun(() -> ok).
  +-type job_finish_callback() :: fun((id(), description()) -> ok).
   % Types used to provide additional information to framework
   -type timestamp() :: non_neg_integer(). % Timestamp used to sort tasks (usually provided by callback function)
   -type sync_info() ::  #{
  
positive.code:         AsyncMasterJobsList = maps:get(async_master_jobs, MasterAns, []),
          SlaveJobsList = maps:get(slave_jobs, MasterAns, []),
          SequentialSlaveJobsList = maps:get(sequential_slave_jobs, MasterAns, []),
  
          Description0 = maps:get(description, MasterAns, #{}),
          Description = Description0#{
              slave_jobs_delegated => length(SlaveJobsList) + length(lists:flatten(SequentialSlaveJobsList)),
              master_jobs_delegated => length(MasterJobsList) + length(AsyncMasterJobsList)
          },
          {ok, _, Canceled} = traverse_task:update_description(ExtendedCtx, PoolName, TaskID, Description),
  
          {_, NewDescription, Canceled2} = case Canceled of
  
negative.code:                     slave_jobs_failed => SlavesErrors,
                      master_jobs_done => 1
                  },
                  SlavesDescription = #{
                      slave_jobs_delegated => SlaveJobsDelegatedNum,
                      slave_jobs_done => SlavesOk,
                      slave_jobs_failed => SlavesErrors
                  },
                  Fun = maps:get(finish_callback, MasterAns, fun(_TaskID, _SlavesDescription) -> ok end),
                  Fun(TaskID, SlavesDescription),
                  {ok, _, _} = traverse_task:update_description(ExtendedCtx, PoolName, TaskID, Description2)
          end,
  
  