anchor.diff:  	Expr ->
   	    %% The let body was successfully moved into the let argument.
   	    %% Now recursively re-process the new expression.
  -	    expr(Expr, Ctxt, sub_new_preserve_types(Sub))
  +	    Expr
       end;
   expr(#c_letrec{body=#c_var{}}=Letrec, effect, _Sub) ->
       %% This is named fun in an 'effect' context. Warn and ignore.
  
positive.code:     case Ctxt of
  	effect ->
  	    add_warning(Tuple, useless_building),
  	    expr(make_effect_seq(Es, Sub), Ctxt, Sub);
  	value ->
  	    ann_c_tuple(Anno, Es)
      end;
  
negative.code: 		false ->
  		    %% let <Var> = Arg in <OtherVar>  ==>  seq Arg OtherVar
  		    Arg = maybe_suppress_warnings(Arg1, Vs0, PrevBody),
  		    #c_seq{arg=Arg,body=Body}
  	    end;
  	{[],#c_values{es=[]},_} ->
  	    %% No variables left.
  	    Body;
  	{Vs,Arg1,#c_literal{}} ->
  	    Arg = maybe_suppress_warnings(Arg1, Vs, PrevBody),
  	    case Ctxt of
  		effect ->
  		    %% Throw away the literal body.
  		    Arg;
  		value ->
  		    %% Since the variable is not used in the body, we
  		    %% can rewrite the let to a sequence.
  		    %%  let <Var> = Arg in Literal ==> seq Arg Literal
  		    #c_seq{arg=Arg,body=Body}
  	    end;
  	{Vs,Arg1,Body} ->
  	    %% If none of the variables are used in the body, we can
  	    %% rewrite the let to a sequence:
  