anchor.diff:  
   
   terminate(
  -  Class, Reason, Stacktrace,
  -  Debug,
  +  Class, Reason, Stacktrace, Debug,
     #{module := Module, state := State, data := Data, postponed := P} = S,
     Q) ->
       try Module:terminate(Reason, State, Data) of
  
positive.code: 
  %% Entry point for wakeup_from_hibernate/3
  loop_receive(
    Parent, Debug, #{timer_refs := TimerRefs, timer_types := TimerTypes} = S) ->
      receive
  	Msg ->
  	    case Msg of
  		{system,Pid,Req} ->
  		    #{hibernate := Hibernate} = S,
  		    %% Does not return but tail recursively calls
  		    %% system_continue/3 that jumps to loop/3
  		    sys:handle_system_msg(
  		      Req, Pid, Parent, ?MODULE, Debug, S, Hibernate);
  		{'EXIT',Parent,Reason} = EXIT ->
  		    %% EXIT is not a 2-tuple and therefore
  		    %% not an event and has no event_type(),
  		    %% but this will stand out in the crash report...
  		    terminate(
  		      exit, Reason, ?STACKTRACE(), Debug, S, [EXIT]);
  		{timeout,TimerRef,TimerMsg} ->
  		    case TimerRefs of
  			#{TimerRef := TimerType} ->
  
negative.code: 	    end;
  	{Class,Reason,Stacktrace} ->
  	    terminate(
  	      Class, Reason, Stacktrace, Debug,
  	      S#{
  		state := NextState,
  		data := NewData,
  		timer_refs := TimerRefs,
  		timer_types := TimerTypes,
  		hibernate := Hibernate},
  	      [Event|Events])
      end.
  
  