anchor.diff:        ?debug_flag(?send, {send, successful}),
         {Message, Info#concuerror_info{next_event = NewEvent}}
     end;
  -run_built_in(erlang, process_flag, 2, [trap_exit, Value],
  -             #concuerror_info{trap_exit = OldValue} = Info) ->
  -  ?debug_flag(?trap, {trap_exit_set, Value}),
  -  {OldValue, Info#concuerror_info{trap_exit = Value}};
  +run_built_in(erlang, process_flag, 2, [Flag, Value],
  +             #concuerror_info{flags = Flags} = Info) ->
  +  {Result, NewInfo} =
  +    case Flag of
  +      trap_exit ->
  +        ?badarg_if_not(is_boolean(Value)),
  +        {Flags#process_flags.trap_exit,
  +         Info#concuerror_info{flags = Flags#process_flags{trap_exit = Value}}};
  +      priority ->
  +        ?badarg_if_not(lists:member(Value, [low,normal,high,max])),
  +        {Flags#process_flags.priority,
  +         Info#concuerror_info{flags = Flags#process_flags{priority = Value}}}
  +    end,
  +  {Result, NewInfo};
   run_built_in(erlang, unlink, 1, [Pid], #concuerror_info{links = Links} = Info) ->
     Self = self(),
     [true,true] = [ets:delete_object(Links, L) || L <- ?links(Self, Pid)],
  
positive.code:       end;
      {exit_signal, #message{data = {'EXIT', _From, Reason}} = Message} ->
        Scheduler = Info#concuerror_info.scheduler,
        Trapping = Info#concuerror_info.trap_exit,
        case is_active(Info) of
          true ->
            %% XXX: Verify that this is the correct behaviour
  
negative.code:   #concuerror_info{
       links = LinksTable,
       monitors = MonitorsTable,
       flags = #process_flags{trap_exit = Trapping}} = Info,
    FetchFun =
      fun(Table) ->
          [begin ets:delete_object(Table, E), {D, S} end ||
  