anchor.diff:              ComponentState
       end.
   
  +-spec gc_state_bp_set_cond(component_state(),fun(),atom())
  +                          -> component_state().
   gc_state_bp_set_cond({Options, Slowest, BPState}, Cond, BPName) ->
       ?TRACE_BP("Set bp ~p with name ~p~n", [Cond, BPName]),
       {Options, Slowest, bp_state_bp_set_cond(BPState, Cond, BPName)}.
   
  +-spec gc_state_bp_set(component_state(),comm:message_tag(),atom())
  +                     -> component_state().
   gc_state_bp_set({Options, Slowest, BPState}, MsgTag, BPName) ->
       ?TRACE_BP("Set bp ~p with name ~p~n", [MsgTag, BPName]),
       {Options, Slowest, bp_state_bp_set(BPState, MsgTag, BPName)}.
   
  +-spec gc_state_bp_del(component_state(), atom())
  +                     -> component_state().
   gc_state_bp_del({Options, Slowest, BPState}, BPName) ->
       ?TRACE_BP("Del bp ~p~n", [BPName]),
       {Options, Slowest, bp_state_bp_del(BPState, BPName)}.
   
  +-spec gc_state_bp_hold_back(component_state(), bp_message())
  +                           -> component_state().
   gc_state_bp_hold_back({Options, Slowest, BPState}, Message) ->
       ?TRACE_BP("Enqueued bp op ~p -> ~p~n", [Message,
       {Options, Slowest, bp_state_hold_back(BPState, Message)}]),
       {Options, Slowest, bp_state_hold_back(BPState, Message)}.
   %    NewQueue = lists:append(Queue, [Message]),
   
  +-spec handle_breakpoint(comm:message(), any(), component_state())
  +                           -> component_state().
   handle_breakpoint(Message, State, ComponentState) ->
       BPActive = bp_active(Message, State, ComponentState),
       wait_for_bp_leave(Message, State, ComponentState, BPActive).
   
  +-spec bp_active(comm:message(), any(), component_state()) -> boolean().
   bp_active(_Message, _State,
             {_Options, _Slowest,
              {[] = _BPs, false = _BPActive, _HB_BP_Ops, false = _BPStepped, unknown}}
  
positive.code:             wait_for_bp_leave(Message, State, NextCompState, true);
          {'$gen_component', bp, bp_del, BPName} ->
              NextCompState =
                  case bp_state_get_queue(BPState) of
                      {[_H|_T], false} -> gc_state_bp_hold_back(ComponentState, BPMsg);
                      _ -> gc_state_bp_del(ComponentState, BPName)
                  end,
              wait_for_bp_leave(Message, State, NextCompState, true)
      end.
  
  handle_unknown_event({web_debug_info, Requestor}, State, ComponentState, Module, On) ->
      GenCompInfo = lists:flatten(io_lib:format("~p", [State])),
      comm:send_local(Requestor, {web_debug_info_reply, 
                                  [{"generic info from gen_component:", ""},
                                   {"module", Module}, {"handler", On},
                                   {"state", GenCompInfo}]}),
  
negative.code:                 end
      end.
  
  -spec handle_gen_component_message(Message::tuple(), Module::module(), Handler::atom(), State::term(), component_state()) -> component_state().
  handle_gen_component_message(Message, Module, On, State, ComponentState) ->
      {_Options, _Slowest, BPState} = ComponentState,
      case Message of
  