anchor.diff:  	    Debug1 = sys:handle_debug(Debug, fun print_event/3, Name,
   				      {noreply, NState}),
   	    loop(Parent, Name, NState, Mod, infinity, HibernateAfterTimeout, Debug1);
  -	{ok, {noreply, NState, Time1}} ->
  -	    Debug1 = sys:handle_debug(Debug, fun print_event/3, Name,
  -				      {noreply, NState}),
  -	    loop(Parent, Name, NState, Mod, Time1, HibernateAfterTimeout, Debug1);
  +	{ok, {noreply, NState, TimeoutOrHibernate}} when ?is_timeout(TimeoutOrHibernate) orelse TimeoutOrHibernate =:= hibernate ->
  +	    Debug1 = sys:handle_debug(Debug, fun print_event/3, Name, {noreply, NState}),
  +	    loop(Parent, Name, NState, Mod, TimeoutOrHibernate, HibernateAfterTimeout, Debug1);
  +	{ok, {noreply, NState, {continue, _}=Continue}} ->
  +	    Debug1 = sys:handle_debug(Debug, fun print_event/3, Name, {noreply, NState}),
  +	    loop(Parent, Name, NState, Mod, Continue, HibernateAfterTimeout, Debug1);
   	{ok, {stop, Reason, NState}} ->
   	    terminate(Reason, ?STACKTRACE(), Name, From, Msg, Mod, NState, Debug);
   	{'EXIT', Class, Reason, Stacktrace} ->
  
positive.code:        ) ->
                          no_return().
  %%
  enter_loop(Mod, Options, State) ->
      enter_loop(Mod, Options, State, self(), infinity).
  
  -spec enter_loop(
  
negative.code: 	{ok, {reply, Reply, NState}} ->
  	    reply(From, Reply),
  	    loop(Parent, Name, NState, Mod, infinity, HibernateAfterTimeout, []);
  	{ok, {reply, Reply, NState, TimeoutOrHibernate}} when ?is_timeout(TimeoutOrHibernate) orelse TimeoutOrHibernate =:= hibernate ->
  	    reply(From, Reply),
  	    loop(Parent, Name, NState, Mod, TimeoutOrHibernate, HibernateAfterTimeout, []);
  	{ok, {reply, Reply, NState, {continue, _}=Continue}} ->
  	    reply(From, Reply),
  	    loop(Parent, Name, NState, Mod, Continue, HibernateAfterTimeout, []);
  	{ok, {stop, Reason, Reply, NState}} ->
  	    try
  		terminate(Reason, ?STACKTRACE(), Name, From, Msg, Mod, NState, [])
  