anchor.diff:                  impossible ->
                       bsm_an(Expr);
                   Other ->
  -                    expr(Other, Ctxt, sub_new_preserve_types(Sub))
  +		    Other
               end;
   	Other ->
   	    expr(Other, Ctxt, Sub)
  
positive.code: 		false ->
  		    %% let <Var> = Arg in <OtherVar>  ==>  seq Arg OtherVar
  		    Arg = maybe_suppress_warnings(Arg1, Vs0, PrevBody),
  		    expr(#c_seq{arg=Arg,body=Body}, Ctxt,
  			 sub_new_preserve_types(Sub))
  	    end;
  	{[],#c_values{es=[]},_} ->
  	    %% No variables left.
  	    Body;
  	{Vs,Arg1,#c_literal{}} ->
  	    Arg = maybe_suppress_warnings(Arg1, Vs, PrevBody),
  	    E = 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,
  	    expr(E, Ctxt, sub_new_preserve_types(Sub));
  	{Vs,Arg1,Body} ->
  	    %% If none of the variables are used in the body, we can
  	    %% rewrite the let to a sequence:
  
negative.code: 	Expr ->
  	    %% The let body was successfully moved into the let argument.
  	    %% Now recursively re-process the new expression.
  	    Expr
      end;
  expr(#c_letrec{body=#c_var{}}=Letrec, effect, _Sub) ->
      %% This is named fun in an 'effect' context. Warn and ignore.
  