anchor.diff:          {ok,[{call,1,{remote,1,{atom,1,M},{atom,1,F}},Args}]} ->
             {M,F,[arg(A) || A<-Args]};
           {ok,[{remote,1,{atom,1,M},{atom,1,F}}]} ->
  -          {M,F,'_'}
  -      end
  +          {M,F,'_'};
  +        {ok,_} ->
  +          exit(this_is_too_confusing)
  +     end
     end.
   
   guards_fun(Str) -> 
  
positive.code: guard({op,1,Op,One})            -> {Op,guard(One)};           % binary op
  guard(Guard)                    -> arg(Guard).                % variable
  
  arg({cons,_,_,_})   -> throw({badmatch,{syntax_error,no_lists_in_args}});
  arg({tuple,1,Args}) -> {tuple,[arg(A)||A<-Args]};
  arg({T,1,Var})      -> {T,Var}.
  
  
negative.code: -module('redbug_msc').
  -author('Mats Cronqvist').
  
  -export([transform/1]).
  -export([unit/0]).
  
  -define(is_string(Str), (Str=="" orelse (9=<hd(Str) andalso hd(Str)=<255))).
  
  transform(Es = [_|_]) when not ?is_string(Es) ->
    [compile(parse(to_string(E))) || E <- Es];
  transform(E) ->
    transform([E]).
  
  to_string(A) when is_atom(A)    -> atom_to_list(A);
  to_string(S) when ?is_string(S) -> S;
  to_string(X)                    -> exit({illegal_input,X}).
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% compiler
  