anchor.diff:  	    C1 = {[F0(R, Len) || R <- Ranges], {Len, Freq}},
   	    From ! {self(), C1},
   	    hash_loop({NextSeqNo, ExpHashTab, NewData},Inc);
  -	{remove_entry, {M, F, A}} ->
  +	{remove_entry, {M, F, A}, From} ->
   	    NewData1 = [case {M,F,A}/={M1, F1, A1} of
   			    true ->
   				{Seq, {M1, F1, A1}, KeyExprPairs};
  
positive.code: 				{Seq, {M1, F1, A1}, []}
  			end
  			|| {Seq, {M1, F1, A1}, KeyExprPairs} <- NewData],
  	    hash_loop({NextSeqNo, ExpHashTab, NewData1},Inc);
  	stop ->
  	    %%file:write_file(?ExpSeqFile, term_to_binary(NewData)),
  
negative.code: %% Insert a sequence of expressions into the AST table. 
  %% The sequence of expressions to be inserted are from 
  %% the same expression body (clause_expr, block_expr, try_expr).
  insert_to_ast_tab(Pid, {{M, F, A}, ExprASTs, Index, StartLine}) ->
      Self=self(),
      Pid ! {add, {{M, F, A}, ExprASTs, Index,  StartLine}, Self},
      receive
          {Pid, Self, done} ->
              ok
      end.
  
  %% Quick hash only updates the location information, as the 
  %% actual entries already exist.
  quick_hash_function(Pid, {{FName, FunName, Arity}, StartLine}) ->
      Self=self(),
      Pid ! {quick_hash, {{FName, FunName, Arity}, StartLine}, Self},
      receive
          {Pid, Self, done} ->
              ok
      end.
  
  %% Get initial clone candidates.    
  get_clone_candidates(Pid, Thresholds, Dir) ->
  