anchor.diff:    compile({M,F,lists:duplicate(Ari,{var,'_'}),[],Actions});
   compile({M,F,As,Gs,Actions}) when is_list(As) ->
     {Vars,Args} = compile_args(As),
  -  {{M,F,length(As)},
  +  {{M,F,len(F,As)},
      [{Args,compile_guards(Gs,Vars),compile_acts(Actions)}],
      flags()}.
  +
  +len('_',_) -> '_';
  +len(_,As)  -> length(As).
   
   flags() -> [local].
   
  
positive.code:      ,{"lists:reverse(\"ab\"++C)when 3<length(C)",
         {{lists,reverse,1},
          [{[[97,98|'$1']],[{'<',3,{length,'$1'}}],[]}],
          [local]}}       
       ,{"a:b([$a,$b|C])",
         {{a,b,1},[{[[97,98|'$1']],[],[]}],
          [local]}}
      ]).
  
  unit(Method,{Str,MS}) ->
    try MS=Method(Str),Str
    catch
      _:{MS,_,_} -> Str;
      _:{MS,_}   -> Str;
      C:R        -> {C,R,Str,erlang:get_stacktrace()}
    end.
  
negative.code:           {M,F,Ari};
          {ok,[{call,1,{remote,1,{atom,1,M},{atom,1,F}},Args}]} ->
            {M,F,[arg(A) || A<-Args]};
          {ok,[{call,1,{remote,1,{atom,1,M},{var,1,'_'}},Args}]} ->
            {M,'_',[arg(A) || A<-Args]};
          {ok,[{remote,1,{atom,1,M},{atom,1,F}}]} ->
            {M,F,'_'};
          {ok,C} ->
            exit({this_is_too_confusing,C})
       end
    end.
  
  