anchor.diff:               true -> Clock;
                false -> {EarlyActor, EarlyIndex}
              end},
  +        Sleeping = BaseSleeping ++ Done,
           NotDep = not_dep(NewOldTrace, Later, DPORInfo, Event),
  -        Sleeping = BaseSleeping ++ Done,
  -        NW = insert_wakeup(Sleeping, Wakeup, NotDep, DPOR, Bound, Exploring),
  -        show_plan(NW, Logger, EarlyIndex, NotDep),
  -        NW
  +        NW =
  +          case DPOR =:= optimal of
  +            true ->
  +              insert_wakeup_optimal(Sleeping, Wakeup, NotDep, Bound, Exploring);
  +            false ->
  +              Initials = get_initials(NotDep),
  +              insert_wakeup_non_optimal(Sleeping, Wakeup, Initials, false, Exploring)
  +          end,
  +        case is_atom(NW) of
  +          true -> NW;
  +          false ->
  +            show_plan(NW, false, Logger, EarlyIndex, NotDep),
  +            NW
  +        end
       end,
     case MaybeNewWakeup of
       skip ->
  
positive.code: 
  %%------------------------------------------------------------------------------
  
  has_more_to_explore(#scheduler_state{trace = Trace} = State) ->
    TracePrefix = find_prefix(Trace, State),
    case TracePrefix =:= [] of
      true -> {false, State#scheduler_state{trace = []}};
      false ->
  
negative.code:       skip;
      over_bound ->
        concuerror_logger:bound_reached(Logger),
        put(bound_exceeded, true),
        skip;
      NewWakeup ->
        NS = TraceState#trace_state{wakeup_tree = NewWakeup},
  