anchor.diff:  transform_node(#binary_op{line=Line, type='**=', val1=Left, val2=Right}) ->
     rebind_op(Line, '**', Left, Right);
   transform_node(#match{left=Left} = Node) ->
  -  Node#match{left=reia_syntax:map_subtrees(fun transform_setters/1, [Left])};
  +  Node#match{left=reia_syntax:map_subtrees(fun transform_setters/2, [Left])};
   transform_node(Node) ->
  -  reia_syntax:map_subtrees(fun transform_node/1, Node).
  +  reia_syntax:mapfold_subtrees(fun transform_node/1, #state{}, Node).
   
   % Transform shorthand operations that rebind a variable
   rebind_op(Line, Type, Left, Right) ->
  
positive.code: -module(reia_rebinding).
  -export([transform/2]).
  -include("reia_nodes.hrl").
  
  transform(Exprs, _Options) ->
    reia_syntax:map_subtrees(fun transform_node/1, Exprs).
  
negative.code:   }.
  
  % Transform expressions that behave differently in match scope
  transform_setters(Node, State) ->
    reia_syntax:map_subtrees(fun transform_node/1, State, Node).