anchor.diff:  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({cons,_,_,_})   -> exit({syntax_error,no_lists_in_args});
   arg({tuple,1,Args}) -> {tuple,[arg(A)||A<-Args]};
   arg({T,1,Var})      -> {T,Var}.
   
  
positive.code:   try MS=Method(Str),Str
    catch 
      _:{MS,_} -> Str;
      C:R      -> {C,R,Str,erlang:get_stacktrace()}
    end.
  
negative.code:   lists:foldr(
      fun(Str,O)->[unit(fun transform/1,Str)|O]end,[],
      [{"a",
        [{{a,'_','_'},{[],[],[]}}]}
       ,{"a->stack",
         [{{a,'_','_'},{[],[],[{message,{process_dump}}]}}]}
       ,{"a:b",
         [{{a,b,'_'},{[],[],[]}}]}
       ,{"a:b->return",
         [{{a,b,'_'},{[],[],[{return_trace}]}}]}
       ,{"a:b/2",
         [{{a,b,2},{[],[],[]}}]}
       ,{"a:b/2->return",
         [{{a,b,2},{[],[],[{return_trace}]}}]}
       ,{"a:b(X,Y)",
         [{{a,b,2},{['$1','$2'],[],[]}}]}
       ,{"a:b(X,X)",
         [{{a,b,2},{['$1','$1'],[],[]}}]}
       ,{"a:b(X,X) -> return;stack",
         [{{a,b,2},{['$1','$1'],[],[{return_trace},{message,{process_dump}}]}}]}
       ,{"a:b(X,y)",
         [{{a,b,2},{['$1',y],[],[]}}]}
       ,{"a:b(X,1)",
         [{{a,b,2},{['$1',1],[],[]}}]}
       ,{"a:b(X,\"foo\")",
         [{{a,b,2},{['$1',"foo"],[],[]}}]}
       ,{"a:b(X,y)when is_atom(Y)",
         unbound_variable}
       ,{"x:c([string])",
         {syntax_error,no_lists_in_args}}
       ,{"x(s)",
         this_is_too_confusing}
       ,{"a:b(X,y)when not is_atom(X)",
         [{{a,b,2},{['$1',y],[{'not',{is_atom,'$1'}}],[]}}]}
       ,{"a:b(X,y)when not is_atom(X) -> return",
         [{{a,b,2},{['$1',y],[{'not',{is_atom,'$1'}}],[{return_trace}]}}]}
       ,{"a:b(X,y)when element(1,X)==foo, (X==z)",
         [{{a,b,2},{['$1',y],[{'==',{element,1,'$1'},foo},{'==','$1',z}],[]}}]}
      ,{"a:b(X,Y)when X==1,Y=/=a",
         [{{a,b,2},{['$1','$2'],[{'==','$1',1},{'=/=','$2',a}],[]}}]}
      ]).
  
  
  