anchor.diff:             [UnknownMessage,Module,On,self(), pid_groups:group_and_name_of(self()), State]),
       {State, ComponentState}.
   
  +-spec bp_state_new() -> bp_state().
   bp_state_new() ->
       {_BPs = [], _BPActive = false,
        _BP_HB_Q = [], _BPStepped = false,
        _BPStepperPid = unknown}.
  +-spec bp_state_get_bps(bp_state()) -> [bp()].
   bp_state_get_bps(BPState) -> element(1, BPState).
  +-spec bp_state_set_bps(bp_state(), [bp()]) -> bp_state().
   bp_state_set_bps(BPState, Val) -> setelement(1, BPState, Val).
  +-spec bp_state_get_bpactive(bp_state()) -> boolean().
   bp_state_get_bpactive(BPState) -> element(2, BPState).
  +-spec bp_state_set_bpactive(bp_state(), boolean()) -> bp_state().
   bp_state_set_bpactive(BPState, Val) -> setelement(2, BPState, Val).
  +-spec bp_state_get_queue(bp_state()) -> [bp_message()].
   bp_state_get_queue(BPState) -> element(3, BPState).
  +-spec bp_state_set_queue(bp_state(), [bp_message()]) -> bp_state().
   bp_state_set_queue(BPState, Val) -> setelement(3, BPState, Val).
  +-spec bp_state_get_bpstepped(bp_state()) -> boolean().
   bp_state_get_bpstepped(BPState) -> element(4, BPState).
  +-spec bp_state_set_bpstepped(bp_state(), boolean()) -> bp_state().
   bp_state_set_bpstepped(BPState, Val) -> setelement(4, BPState, Val).
  +-spec bp_state_get_bpstepper(bp_state()) -> pid() | 'unknown'.
   bp_state_get_bpstepper(BPState) -> element(5, BPState).
  +-spec bp_state_set_bpstepper(bp_state(), pid() | 'unknown') -> bp_state().
   bp_state_set_bpstepper(BPState, Val) -> setelement(5, BPState, Val).
  +-spec bp_state_bp_set_cond(bp_state(), fun(), bp_name()) -> bp_state().
   bp_state_bp_set_cond(BPState, Cond, BPName) ->
       NewBPs = [ {bp_cond, Cond, BPName} | bp_state_get_bps(BPState)],
       bp_state_set_bps(BPState, NewBPs).
  +
  +-spec bp_state_bp_set(bp_state(), comm:message_tag(), bp_name()) -> bp_state().
   bp_state_bp_set(BPState, MsgTag, BPName) ->
       NewBPs = [ {bp, MsgTag, BPName} | bp_state_get_bps(BPState)],
       bp_state_set_bps(BPState, NewBPs).
  +-spec bp_state_bp_del(bp_state(), bp_name()) -> bp_state().
   bp_state_bp_del(BPState, BPName) ->
       NewBPs = lists:keydelete(BPName, 3, bp_state_get_bps(BPState)),
       bp_state_set_bps(BPState, NewBPs).
  +-spec bp_state_hold_back(bp_state(), bp_message()) -> bp_state().
   bp_state_hold_back(BPState, Message) ->
       NewQueue = lists:append(bp_state_get_queue(BPState), [Message]),
       bp_state_set_queue(BPState, NewQueue).
   
   %% @doc release the bp_step function when we executed a bp_step
  +-spec bp_step_done(module(), atom(), comm:message(), component_state())
  +                  -> component_state().
   bp_step_done(Module, On, Message, ComponentState) ->
       {Options, Slowest, BPState} = ComponentState,
       case {bp_state_get_bpactive(BPState),
  
positive.code:                 end
      end.
  
  -spec handle_gen_component_message(Message::tuple(), Module::module(), Handler::atom(), State::term(), ComponentState) -> ComponentState.
  handle_gen_component_message(Message, Module, On, State, ComponentState) ->
      {_Options, _Slowest, BPState} = ComponentState,
      case Message of
  
negative.code:       Message, State,
        {Options, Slowest, {BPs, true, tl(Queue), BPStepped, StepperPid}}, hd(Queue), FromQueue).
  
  -spec handle_bp_request_in_bp(comm:message(), any(), component_state(),
                                bp_message(), boolean())
                               -> component_state().
  handle_bp_request_in_bp(Message, State, ComponentState, BPMsg, FromQueue) ->
      ?TRACE_BP("Handle bp request in bp ~p ~n", [BPMsg]),
      {Options, Slowest, BPState} = ComponentState,
  