anchor.diff:  -spec run_jobs(State :: state()) -> NewState :: state().
   run_jobs(State) ->
       Now = time_utils:system_time_millis(),
  -     maps:map(fun(_JobName, Job) ->
  +    maps:map(fun(_JobName, Job) ->
           case period_passed(Job, Now) andalso job_finished(Job) of
               true ->
                   Pid = spawn(execute_job_fun(Job)),
  
positive.code:     code_change/3]).
  
  -define(TIMEOUT, timer:minutes(5)).
  -define(DEFAULT_DELAY, onepanel_env:get(services_check_delay)).
  -define(TICK_PERIOD, timer:seconds(10)).
  
  -type condition() :: fun(() -> boolean()).
  
negative.code:     condition :: condition(),
      action :: action(),
  
      %% Period in milliseconds to pass between job runs
      period :: non_neg_integer(),
  
      %% Millisecond timestamp of the last attempt to run the job,
      %% including times when the 'condition' was not met.
      last_run = 0 :: non_neg_integer(),
  
      % pid of the last invocation
      pid :: pid() | undefined
  }).
  
  -type job_name() :: atom().
  -type job() :: #job{}.
  
  -type state() :: #{job_name() => job()}.
  
  -export_type([condition/0, action/0, job/0, job_name/0]).
  
  