anchor.diff:      Pid!stop.
   
   insert_hash(Pid, {{M, F, A}, HashExprPairs}) ->
  -    Pid ! {add, {{M, F, A}, HashExprPairs}}.
  +    Self=self(),
  +    Pid ! {add, {{M, F, A}, HashExprPairs}, Self},
  +    receive
  +        {Pid, Self, done} ->
  +            ok
  +    end.
   
   update_hash(Pid, {{FileName, FunName, Arity}, StartLine})->
  -    Pid ! {quick_hash,{{FileName, FunName, Arity}, StartLine}}.
  +    Self=self(),
  +    Pid ! {quick_hash,{{FileName, FunName, Arity}, StartLine}, Self},
  +    receive
  +        {Pid, Self, done} ->
  +            ok
  +    end.
   
   remove_entry(Pid, {M, F, A}) ->
  -    Pid !{remove_entry, {M, F, A}}.
  +    Self=self(),
  +    Pid !{remove_entry, {M, F, A}, Self},
  +    receive
  +         {Pid, Self, done} ->
  +            ok
  +    end.
   
   get_index(ExpHashTab, Key) ->
       case ets:lookup(ExpHashTab, Key) of 
  
positive.code: 			    _ ->
  				{Seq, {M, F, A}, KeyExprPairs}
  			end || {Seq, {M, F, A}, KeyExprPairs} <- NewData],
  	    hash_loop({NextSeqNo, ExpHashTab, NewData1},Inc);
  	{get_clone_candidates, From, Thresholds, Dir} ->
  	    {ok, OutFileName} = search_for_clones(Dir, lists:reverse(NewData), Thresholds),
  
negative.code: 				{Seq, {M1, F1, A1}, []}
  			end
  			|| {Seq, {M1, F1, A1}, KeyExprPairs} <- NewData],
              From ! {self(), From, done},
  	    hash_loop({NextSeqNo, ExpHashTab, NewData1},Inc);
  	stop ->
  	    %%file:write_file(?ExpSeqFile, term_to_binary(NewData)),
  