anchor.diff:  	    residualize_var(R, S);
   	false ->
   	    S1 = st__mark_inner_pending(L, S),
  -	    case catch {ok, visit(Opnd, S1)} of
  -		{ok, {E, S2}} ->
  +	    try visit(Opnd, S1) of
  +		{E, S2} ->
   		    %% Note that we pass the current environment and
   		    %% context to `copy', but not the current renaming.
   		    S3 = st__clear_inner_pending(L, S2),
  -		    copy(R, Opnd, E, Ctxt, Env, S3);
  -		{'EXIT', X} ->
  -		    exit(X);
  -		X ->
  +		    copy(R, Opnd, E, Ctxt, Env, S3)
  +	    catch
  +		throw:X ->
    		    %% If we use destructive update for the
    		    %% `inner-pending' flag, we must make sure to clear
    		    %% it also if we make a nonlocal return.
  
positive.code: 		false ->
  		    %% The result could not be represented as a literal.
  		    i_call_4(M, F, As, E, Ctxt, Env, S)
  	    end;
  	_ ->
  	    %% The evaluation attempt did not complete normally.
  	    i_call_4(M, F, As, E, Ctxt, Env, S)
      end.
  
negative.code:     %% Note that we extract the results of argument expessions here; the
      %% expressions could still be sequences with side effects.
      Vs = [concrete(result(A)) || A <- As],
      try apply(atom_val(M), atom_val(F), Vs) of
  	V ->
  	    %% Evaluation completed normally - try to turn the result
  	    %% back into a syntax tree (representing a literal).
  	    case is_literal_term(V) of
  