anchor.diff:  
   %% Variable value info.
   -record(sub, {v=[],				%Variable substitutions
  -	      s=[],				%Variables in scope
  -	      t=[],				%Types
  +              s=cerl_sets:new() :: cerl_sets:set(), %Variables in scope
  +              t=[],		                    %Types
   	      in_guard=false}).			%In guard or not.
   
   -type type_info() :: cerl:cerl() | 'bool' | 'integer'.
  
positive.code: 	    B1 = body(B0, ScopeSub),
  
  	    {Lvs,B2,Sub1} = let_substs(Lvs0, B1, Sub0),
  	    Sub2 = Sub1#sub{s=gb_sets:union(ScopeSub#sub.s,
  					    Sub1#sub.s)},
  	    Lbody = body(Lbody0, Sub2),
  	    B = Let#c_let{vars=Lvs,arg=core_lib:make_values(B2),body=Lbody},
  
  
negative.code: verify_scope(E, #sub{s=Scope}) ->
      Free0 = cerl_trees:free_variables(E),
      Free = [V || V <- Free0, not is_tuple(V)],	%Ignore function names.
      case ordsets:is_subset(Free, cerl_sets:to_list(Scope)) of
  	true -> true;
  	false ->
  	    io:format("~p\n", [E]),
  	    io:format("~p\n", [Free]),
  	    io:format("~p\n", [cerl_sets:to_list(Scope)]),
  	    false
      end.
  -endif.
  