anchor.diff:          {'$gen_component', get_state_response, State} -> State
       end.
   
  --spec get_state(Pid::pid(), Timeout::non_neg_integer()) -> term().
  +-spec get_state(Pid::pid(), Timeout::non_neg_integer()) -> term() | failed.
   get_state(Pid, Timeout) ->
       Pid ! {'$gen_component', get_state, self()},
       receive
           {'$gen_component', get_state_response, State} -> State
  +    after Timeout -> failed
  +    end.
  +
  +-spec get_component_state(Pid::pid()) -> term().
  +get_component_state(Pid) ->
  +    Pid ! {'$gen_component', get_component_state, self()},
  +    receive
  +        {'$gen_component', get_component_state_response, State} -> State
  +    end.
  +
  +-spec get_component_state(Pid::pid(), Timeout::non_neg_integer()) -> {Module::module(), Handler::atom(), ComponentState::term()} | failed.
  +get_component_state(Pid, Timeout) ->
  +    Pid ! {'$gen_component', get_component_state, self()},
  +    receive
  +        {'$gen_component', get_component_state_response, State} -> State
       after Timeout -> failed
       end.
   
  
positive.code:         {'$gen_component', get_state, Pid} ->
              comm:send_local(
                Pid, {'$gen_component', get_state_response, State}),
              ComponentState
      end.
  
  
negative.code:           when is_tuple(GenComponentMessage),
                 '$gen_component' =:= element(1, GenComponentMessage) ->
              NewComponentState =
                  handle_gen_component_message(GenComponentMessage, Module, On,
                                               State, ComponentState),
              loop(Module, On, State, NewComponentState);
          % handle failure detector messages
          {ping, Pid} ->
  