anchor.diff:    [ac_fun(A)|| A <- As].
   
   ac_fun("stack") -> {message,{process_dump}};
  -ac_fun("return")-> {return_trace}.
  +ac_fun("return")-> {return_trace};
  +ac_fun(X)       -> exit({unknown_action,X}).
   
   compile_guards(Gs,Vars) ->
     {Vars,O} = lists:foldr(fun gd_fun/2,{Vars,[]},Gs),
  
positive.code: assert(Fun,Tag) ->
    try Fun()
    catch 
      _:{_,{error,{1,erl_parse,L}}} -> exit({Tag,lists:flatten(L)});
      _:R                           -> exit({Tag,R})
    end.
  
  
  
negative.code: guard({op,1,Op,One})            -> {Op,guard(One)};           % binary op
  guard(Guard)                    -> arg(Guard).                % variable
  
  arg({cons,_,_,_})   -> exit({syntax_error,"lists not allowed in arg list"});
  arg({tuple,1,Args}) -> {tuple,[arg(A)||A<-Args]};
  arg({T,1,Var})      -> {T,Var}.
  
  