anchor.diff:  -type interleaving_id() :: pos_integer().
   
   -ifdef(BEFORE_OTP_17).
  -%% Not supported.
  +%% Not used.
   -else.
  --ifdef(BEFORE_OTP_18).
  --type clock_vector() :: orddict:orddict().
  --else.
  --type clock_vector() :: orddict:orddict(pid(), index()).
  --endif.
  +-type vector_clock() :: #{actor() => index()}.
   -endif.
   
   -ifdef(BEFORE_OTP_17).
   -type clock_map()           :: dict().
   -type message_event_queue() :: queue().
   -else.
  --type clock_map()           :: dict:dict(pid(), clock_vector()).
  +-type clock_map()           :: dict:dict(pid(), vector_clock()).
   -type message_event_queue() :: queue:queue(#message_event{}).
   -endif.
   
  
positive.code: max_cv(D1, D2) ->
    Merger = fun(_Key, V1, V2) -> max(V1, V2) end,
    orddict:merge(Merger, D1, D2).
  
  next_bound(SchedulingBoundType, Done, PreviousActor, Bound) ->
    case SchedulingBoundType of
  
negative.code:             #trace_state{clock_map = ClockMap} = TraceState,
              EarlyActorClock = lookup_clock(EarlyActor, ClockMap),
              max_cv(
                Clock, clock_store(EarlyActor, EarlyIndex, EarlyActorClock))
          end
      end,
    update_clock(Rest, Event, NewClock, State).
  