anchor.diff:                try_loop(Module, On, State, ComponentState)
       end.
   
  +-spec loop(module(), atom(), term(), component_state()) -> ok.
   loop(Module, On, State, {_Options, _Slowest, _BPState} = ComponentState) ->
       ?CALLING_RECEIVE(Module),
       receive Msg -> loop(Module, On, Msg, State, ComponentState)
       end.
  -    
  +
  +-spec loop(module(), atom(), comm:message(), term(), component_state()) -> ok.
   loop(Module, On, ReceivedMsg, State, {_Options, _Slowest, _BPState} = ComponentState) ->
       case ReceivedMsg of
           %%%%%%%%%%%%%%%%%%%%
  
positive.code:         bp_active(Message, State,
                    {Options, Slowest, {RemainingBPs, BPActive, HB_BP_Ops, BPStepped, StepperPid}}).
  
  wait_for_bp_leave(_Message, _State, ComponentState, _BP_Active = false) ->
      ComponentState;
  wait_for_bp_leave(Message, State, ComponentState, _BP_Active = true) ->
  
negative.code:     {'$gen_component', [{on_handler, Handler}], State}.
  
  %% @doc perform a post op, i.e. handle a message directly after another
  -spec post_op(State, comm:message())
          -> {'$gen_component', [{post_op, comm:message()}], State}.
  post_op(State, Message) ->
      {'$gen_component', [{post_op, Message}], State}.
  
  %% requests regarding breakpoint processing
  -spec bp_set(pid(), comm:message_tag(), bp_name()) -> ok.
  bp_set(Pid, MsgTag, BPName) ->
      Pid ! {'$gen_component', bp, bp_set, MsgTag, BPName},
      ok.
  
  %% @doc Module:Function(Message, State, Params) will be evaluated to decide
  %% whether a BP is reached. Params can be used as a payload.
  -spec bp_set_cond(pid(),
                    Cond::{module(), atom(), 2}
                        | fun((comm:message(), State::any()) -> boolean()),
                    bp_name()) -> ok.
  bp_set_cond(Pid, {_Module, _Function, _Params = 2} = Cond, BPName) ->
      Pid ! {'$gen_component', bp, bp_set_cond, Cond, BPName},
      ok;
  