anchor.diff:  	    ChangedData = [Elem || Elem = {{{File, _F, _A, _I}, _Toks, _Loc, _IsNew}, _HashValIndex}
   				       <- Data,
   				   lists:member(File, FilesChanged)],
  -	    spawn_link(fun () -> hash_loop({1, ExpHashTab, {NewData, lists:reverse(ChangedData)}}) end);
  +	    NextIndex= ets:info(ExpHashTab, size)+1,
  +	    spawn_link(fun () -> hash_loop({NextIndex, ExpHashTab, {NewData, lists:reverse(ChangedData)}}) end);
   	_Res ->
   	    Data = {[{{{'_', '_', '_', '_'}, 0, {{0, 0}, 0}, false}, '#'}], []},
   	    spawn_link(fun () -> hash_loop({1, ExpHashTab, Data}) end)
       end.
     
   stop_hash_process(Pid) ->
  -    Pid!stop.
  +    Pid!stop. 
   
   insert_hash(Pid, {HashVal, Elem={_MFAI, _NumofToks, _Loc}}) ->
       Pid ! {add, {HashVal, Elem}}.
  
positive.code: 	
  	 
  
  -spec(get_parameters_eclipse/5::(MinLen::integer(), MinToks::integer(), MinFreq::integer(), 
  					 MaxNewVars::integer(),SimiScore::float())->
  					      {integer(), integer(), integer(), integer(),float()}).
  get_parameters_eclipse(MinLen1, MinToks1, MinFreq1, MaxNewVars1,SimiScore1) ->
      MinLen = case MinLen1 < 1 of
  		 true ->
  		     ?DEFAULT_LEN;
  	       _ -> MinLen1
  	     end,
      MinFreq = case MinFreq1 < ?DEFAULT_FREQ of
  		  true ->
  		      ?DEFAULT_FREQ;
  		  _ -> MinFreq1
  	      end,
      MinToks = case MinToks1 < 20 of
  		  true ->
  		      ?DEFAULT_TOKS;
  		  _ -> MinToks1
  	      end,
      MaxNewVars = case MaxNewVars1<0 of 
  		     true ->
  			 ?DEFAULT_NEW_VARS;
  		     _ -> MaxNewVars1
  		 end,			      
      SimiScore = case SimiScore1 >= 0.1 andalso SimiScore1 =< 1.0
  		of
  		    true -> SimiScore1;
  		    _ -> ?DefaultSimiScore
  		end,
      {MinLen, MinToks, MinFreq, MaxNewVars, SimiScore}.
  
  
  get_parameters(MinLen1, MinToks1 ,MinFreq1, MaxVars1, SimiScore1) ->
      MinLen = get_parameters_1(MinLen1, ?DEFAULT_LEN, 1),
      MinToks = get_parameters_1(MinToks1,?DEFAULT_TOKS, 20),
      MinFreq = get_parameters_1(MinFreq1, ?DEFAULT_FREQ,?DEFAULT_FREQ),
      MaxVars = get_parameters_1(MaxVars1, ?DEFAULT_NEW_VARS, 0),
      SimiScore = try
  		    case SimiScore1 of
  			[] -> ?DefaultSimiScore;
  			_ -> S = list_to_float(SimiScore1),
  			     case S >= 0.1 andalso S =< 1.0 of
  				 true -> S;
  				 _ -> ?DefaultSimiScore
  			     end
  		    end
  		catch
  		    V2 -> V2;
  		    _:_ -> throw({error, "Parameter input is invalid."})
  		end,
      {MinLen, MinToks, MinFreq, MaxVars, SimiScore}.
  
  
  get_parameters_1(Input, DefaultVal, MinVal) ->
  
negative.code:     MaxNewVars = Thresholds#threshold.max_new_vars,
      case Score1 >= SimiScoreThreshold  andalso
  	simi_score(Exprs2, SubExprs2) >= SimiScoreThreshold  andalso
  	sets:size(exprs_to_be_generalised(lists:append(Subst))) =< MaxNewVars of	%%% ERROR HERE SHOULD NOT BE SUBST.
        true ->
  	    [ClonePair];
        false ->
  	    decompose_clone_pairs_by_simi_score_1(
  	      {Range1, Range2, Subst}, {Exprs1, Exprs2}, Thresholds)
  