anchor.diff:  split_fun(Str) ->
     fun() ->
         % strip off the actions, if any
  -      case re:run(Str,"^(.+)->\\s*([a-z;]+)\$",[{capture,[1,2],list}]) of
  +      case re:run(Str,"^(.+)->\\s*([a-z;]+)\\s*\$",[{capture,[1,2],list}]) of
           {match,[St,Action]} -> ok;
           nomatch             -> St=Str,Action=""
         end,
         % strip off the guards, if any
  -      case re:run(St,"^(.+)when(.+)\$",[{capture,[1,2],list}]) of
  +      case re:run(St,"^(.+[\\s)])+when\\s(.+)\$",[{capture,[1,2],list}]) of
           {match,[S,Guard]} -> ok;
           nomatch           -> S=St,Guard=""
         end,
         % add a wildcard F, if Body is just an atom (presumably a module)
  -      case re:run(S,"^[a-zA-Z0-9_]+\$") of
  +      case re:run(S,"^\\s*[a-zA-Z0-9_]+\\s*\$") of
           nomatch -> Body=S;
           _       -> Body=S++":'_'"
         end,
  
positive.code:         [local]}}
       ,{"a:b(X,X) -> return;stack",
         {{a,b,2},
          [{['$1','$1'],[],[{return_trace},{message,{process_dump}}]}],
          [local]}}
      ]).
  
  
negative.code:       {{a,b,2},[{['$1','$2'],[{'==','$1',1},{'=/=','$2',a}],[]}],[local]}}
       ,{"a:b(X,y)when not is_atom(X) -> return",
         {{a,b,2},
          [{['$1',y],[{'not',{is_atom,'$1'}}],[{exception_trace}]}],
          [local]}}
       ,{"a:b(X,y)when element(1,X)==foo, (X==z)",
         {{a,b,2},
  