anchor.diff:  %% DATA STRUCTURES
   %% =============================================================================
   
  --type event_tree() :: [{event(), integer(), event_tree()}].
  +-record(backtrack_entry, {
  +          event                   :: event(),
  +          origin = 1              :: integer(),
  +          wakeup_tree = []        :: event_tree()
  +         }).
  +
  +-type event_tree() :: [#backtrack_entry{}].
   
   -record(trace_state, {
             actors           = []         :: [pid() | {channel(), queue()}],
  
positive.code:   insert_wakeup(Wakeup, NotDep, Exploring).
  
  insert_wakeup([], NotDep, Exploring) ->
    Fold = fun(Event, Acc) -> [{Event, Exploring, Acc}] end,
    lists:foldr(Fold, [], NotDep);
  insert_wakeup([{Event, M, Deeper} = Node|Rest], NotDep, Exploring) ->
    case check_initial(Event, NotDep) of
      false ->
        case insert_wakeup(Rest, NotDep, Exploring) of
  
negative.code:     true -> insert_wakeup(Sleeping, Wakeup, NotDep, Exploring);
      false ->
        Initials = get_initials(NotDep),
        All =
          Sleeping ++
          [W || #backtrack_entry{event = W, wakeup_tree = []} <- Wakeup],
        case existing(All, Initials) of
          true -> skip;
          false ->
            Entry =
              #backtrack_entry{event = E, origin = Exploring, wakeup_tree = []},
            Wakeup ++ [Entry]
        end
    end.      
  
  