anchor.diff:           change_handler/2, post_op/2]).
   -export([bp_set/3, bp_set_cond/3, bp_del/2]).
   -export([bp_step/1, bp_cont/1, bp_barrier/1]).
  +
  +-type bp_name() :: atom().
  +
  +-type bp_message() ::
  +          {'$gen_component', bp, breakpoint, step, pid()}
  +        | {'$gen_component', bp, breakpoint, cont}
  +        | {'$gen_component', bp, msg_in_bp_waiting, pid()}
  +        | {'$gen_component', bp, barrier}
  +        | {'$gen_component', bp, bp_set_cond, fun(), bp_name()}
  +        | {'$gen_component', bp, bp_set, comm:message_tag(), bp_name()}
  +        | {'$gen_component', bp, bp_del, bp_name()}.
  +
  +-type bp() ::
  +        {bp, MsgTag :: comm:message_tag(), bp_name()}
  +      | {bp_cond, Condition :: fun(), bp_name()}.
  +
  +-type bp_state() :: {[bp()],
  +                     boolean(),
  +                     [bp_message()],
  +                     boolean(),
  +                     pid() | unknown}.
  +
  +-type component_state() ::
  +        {Options :: list(), Slowest :: float(), bp_state()}.
   
   %% userdevguide-begin gen_component:behaviour
   -spec behaviour_info(atom()) -> [{atom(), arity()}] | undefined.
  
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
  