anchor.diff:  		     {bad_action_from_state_function,Action},
   		     ?STACKTRACE()}
   	    end;
  +	%%
   	%% Actions that set options
   	{hibernate,NewHibernate} when is_boolean(NewHibernate) ->
   	    parse_actions(
   	      Debug, S, State, Actions,
   	      NewHibernate, TimeoutsR, Postpone, NextEventsR);
  -	{hibernate,_} ->
  -	    {error,
  -	     {bad_action_from_state_function,Action},
  -	     ?STACKTRACE()};
   	hibernate ->
   	    NewHibernate = true,
   	    parse_actions(
   	      Debug, S, State, Actions,
   	      NewHibernate, TimeoutsR, Postpone, NextEventsR);
  -	{state_timeout,Time,_} = StateTimeout
  -	  when is_integer(Time), Time >= 0;
  -	       Time =:= infinity ->
  -	    parse_actions(
  -	      Debug, S, State, Actions,
  -	      Hibernate, [StateTimeout|TimeoutsR], Postpone, NextEventsR);
  -	{state_timeout,_,_} ->
  -	    {error,
  -	     {bad_action_from_state_function,Action},
  -	     ?STACKTRACE()};
  -	{timeout,Time,_} = Timeout
  -	  when is_integer(Time), Time >= 0;
  -	       Time =:= infinity ->
  -	    parse_actions(
  -	      Debug, S, State, Actions,
  -	      Hibernate, [Timeout|TimeoutsR], Postpone, NextEventsR);
  -	{timeout,_,_} ->
  -	    {error,
  -	     {bad_action_from_state_function,Action},
  -	     ?STACKTRACE()};
  -	Time
  -	  when is_integer(Time), Time >= 0;
  -	       Time =:= infinity ->
  -	    Timeout = {timeout,Time,Time},
  -	    parse_actions(
  -	      Debug, S, State, Actions,
  -	      Hibernate, [Timeout|TimeoutsR], Postpone, NextEventsR);
  +	%%
   	{postpone,NewPostpone}
   	  when is_boolean(NewPostpone), Postpone =/= forbidden ->
   	    parse_actions(
   	      Debug, S, State, Actions,
   	      Hibernate, TimeoutsR, NewPostpone, NextEventsR);
  -	{postpone,_} ->
  -	    {error,
  -	     {bad_action_from_state_function,Action},
  -	     ?STACKTRACE()};
   	postpone when Postpone =/= forbidden ->
   	    NewPostpone = true,
   	    parse_actions(
   	      Debug, S, State, Actions,
   	      Hibernate, TimeoutsR, NewPostpone, NextEventsR);
  +	%%
   	{next_event,Type,Content} ->
   	    case event_type(Type) of
   		true when NextEventsR =/= forbidden ->
  
positive.code: 		    parse_timers(
  		      TimerRefs, NewTimerTypes, NewCancelTimers, TimeoutsR,
  		      NewSeen, TimeoutEvents);
  		Time =:= 0 ->
  		    %% Cancel any running timer
  		    {NewTimerTypes,NewCancelTimers} =
  			cancel_timer_by_type(
  
negative.code: reply_then_terminate(
    Class, Reason, Stacktrace, Debug,
    #{state := State} = S, Q, Replies) ->
      do_reply_then_terminate(
        Class, Reason, Stacktrace, Debug,
        S, Q, listify(Replies), State).
  %%
  do_reply_then_terminate(
    Class, Reason, Stacktrace, Debug, S, Q, [], _State) ->
  