anchor.diff:  ast(Ast, Variables) ->
     Dict = dict:from_list([{Variable, 0} || Variable <- Variables]),
     ?msg("Input: ~p~n", [Ast]),
  -  {ok, _, Ast2} = reia_visitor:transform(Ast, {normal, Dict}, fun transform/2),
  +  {ok, _, Ast2} = reia_visitor:transform(Ast, #state{bindings=Dict}, fun transform/2),
     ?msg("Output: ~p~n", [Ast2]),
     Ast2.
   
   % Module declarations create a new scope
   transform(State, {module, Line, Name, Expressions}) ->
     Expressions2 = lists:map(fun(Expression) ->
  -      {ok, _, Expression2} = reia_visitor:transform(Expression, {normal, dict:new()}, fun transform/2),
  +      {ok, _, Expression2} = reia_visitor:transform(Expression, #state{bindings=dict:new()}, fun transform/2),
         Expression2
       end,
       Expressions
  
positive.code: -module(reia_ssa).
  -export([ast/1, ast/2, transform/2]).
  
  %-define(msg(Str, Xs), io:format(Str, Xs)).
  -define(msg(Str, Xs), ok).
  
  
negative.code:   
  % Generate a method_call node to be processed by reia_class
  build_method_call(Line, Identifier, Arguments, Mode, Dict) ->  
    {ok, #state{bindings=Dict2}, IvarsIn}  = reia_visitor:transform(
      {identifier, Line, '__instance_variables'}, 
      #state{mode=Mode, bindings=Dict}, 
      fun transform/2
    ),
    {ok, #state{bindings=Dict3}, IvarsOut} = reia_visitor:transform(
      {identifier, Line, '__instance_variables'}, 
      #state{mode=match, bindings=Dict2}, 
      fun transform/2
    ),
    Node = {method_call, Line, Identifier, Arguments, IvarsIn, IvarsOut},
  