anchor.diff:  %%% Helper functions
   %%%----------------------------------------------------------------------
   
  +-ifdef(BEFORE_OTP_17).
  +
  +empty_map() ->
  +  dict:new().
  +
  +is_empty_map(Map) ->
  +  dict:size =:= 0.
  +
  +clock_map_store(P, V, ClockMap) ->
  +  dict:store(P, V, ClockMap).
  +
   lookup_clock(P, ClockMap) ->
     case dict:find(P, ClockMap) of
       {ok, Clock} -> Clock;
       error -> clock_new()
     end.
   
  --ifdef(BEFORE_OTP_17).
  -
   clock_new() ->
     orddict:new().
   
  
positive.code:   orddict:merge(Merger, D1, D2).
  
  -else.
  
  clock_new() ->
    #{}.
  
negative.code:             true -> independent;
              false -> IrreversibleClock
            end,
          BaseNewClockMap = clock_map_store(state, StateClock, ClockMap),
          %% The actor's clock should be added to anything else stemming
          %% from the step (spawns, sends and deliveries)
          NewClockMap =
            add_new_and_messages(Special, ActorNewClock, BaseNewClockMap),
          FinalClockMap = clock_map_store(Actor, ActorNewClock, NewClockMap),
          TraceState#trace_state{clock_map = FinalClockMap}
      end,
    assign_happens_before(Later, [NewTraceState|RevLate], RevEarly, State, Mode).
  