Program: 134347
Project: 134347
Buggy source:
public ArrayList<ResultModel> getResultSet(String key){
  int pos=key.indexOf("String_Node_Str");
  if (pos > 0) {
    symbol=1;
    String keyBefore=key.substring(0,pos);
    String keyAfter=key.substring(pos + 1,key.length());
    vecKey.add(keyBefore);
    vecKey.add(keyAfter);
    System.out.println("String_Node_Str" + keyBefore + "String_Node_Str"+ keyAfter);
    ArrayList<ResultModel> modList=new ArrayList<ResultModel>();
    ArrayList<ResultModel> modListBefore=new ArrayList<ResultModel>();
    ArrayList<ResultModel> modListAfter=new ArrayList<ResultModel>();
    if (this.hashWord.size() > 0) {
      long begin=System.currentTimeMillis();
      ResultModel[] modArray=null;
      String resultBefore=this.hashWord.get(keyBefore);
      String resultAfter=this.hashWord.get(keyAfter);
      String[] array=resultBefore.split("String_Node_Str");
      modArray=new ResultModel[array.length];
      for (int i=0; i < array.length; i++)       modArray[i]=new ResultModel(keyBefore,array[i]);
      if (modArray != null) {
        for (int i=0; i < modArray.length; i++) {
          modListBefore.add(modArray[i]);
        }
        Collections.sort(modList,new sortByWordNum());
      }
      array=resultAfter.split("String_Node_Str");
      modArray=new ResultModel[array.length];
      for (int i=0; i < array.length; i++)       modArray[i]=new ResultModel(keyAfter,array[i]);
      if (modArray != null) {
        for (int i=0; i < modArray.length; i++) {
          modListAfter.add(modArray[i]);
        }
        Collections.sort(modList,new sortByWordNum());
      }
      for (int i=0; i < modListAfter.size(); i++) {
        for (int j=0; j < modListBefore.size(); j++) {
          if (modListBefore.get(j).getUrl().equals(modListAfter.get(i).getUrl())) {
            modList.add(modListBefore.get(j));
          }
        }
      }
      long end=System.currentTimeMillis();
      this.time+=(end - begin);
    }
    return modList;
  }
  int posDiff=key.indexOf("String_Node_Str");
  if (posDiff > 0) {
    symbol=1;
    String keyBefore=key.substring(0,posDiff);
    String keyAfter=key.substring(posDiff + 1,key.length());
    vecKey.add(keyBefore);
    vecKey.add(keyAfter);
    System.out.println("String_Node_Str" + keyBefore + "String_Node_Str"+ keyAfter);
    ArrayList<ResultModel> modList=new ArrayList<ResultModel>();
    ArrayList<ResultModel> modListBefore=new ArrayList<ResultModel>();
    ArrayList<ResultModel> modListAfter=new ArrayList<ResultModel>();
    if (this.hashWord.size() > 0) {
      long begin=System.currentTimeMillis();
      ResultModel[] modArray=null;
      String resultBefore=this.hashWord.get(keyBefore);
      String resultAfter=this.hashWord.get(keyAfter);
      String[] array=resultBefore.split("String_Node_Str");
      modArray=new ResultModel[array.length];
      for (int i=0; i < array.length; i++)       modArray[i]=new ResultModel(keyBefore,array[i]);
      if (modArray != null) {
        for (int i=0; i < modArray.length; i++) {
          modListBefore.add(modArray[i]);
        }
        Collections.sort(modList,new sortByWordNum());
      }
      array=resultAfter.split("String_Node_Str");
      modArray=new ResultModel[array.length];
      for (int i=0; i < array.length; i++)       modArray[i]=new ResultModel(keyAfter,array[i]);
      if (modArray != null) {
        for (int i=0; i < modArray.length; i++) {
          modListAfter.add(modArray[i]);
        }
        Collections.sort(modList,new sortByWordNum());
      }
      for (int i=0; i < modListAfter.size(); i++) {
        for (int j=0; j < modListBefore.size(); j++) {
          if (modListBefore.get(j).getUrl().equals(modListAfter.get(i).getUrl())) {
            modListBefore.remove(j);
          }
        }
      }
      for (int i=0; i < modListBefore.size(); i++) {
        modList.add(modListBefore.get(i));
      }
      long end=System.currentTimeMillis();
      this.time+=(end - begin);
    }
    return modList;
  }
  ArrayList<ResultModel> modList=new ArrayList<ResultModel>();
  if (this.hashWord.size() > 0) {
    long begin=System.currentTimeMillis();
    ResultModel[] modArray=null;
    IKSegmenter iksegmentation=new IKSegmenter(new StringReader(key),true);
    Lexeme lexeme=null;
    try {
      while ((lexeme=iksegmentation.next()) != null) {
        System.out.println(lexeme.getLexemeText());
        vecKey.add(lexeme.getLexemeText());
      }
    }
 catch (    IOException e) {
      e.printStackTrace();
    }
    for (    String strKey : vecKey) {
      String result=this.hashWord.get(strKey);
      if (result != null) {
        String[] array=result.split("String_Node_Str");
        modArray=new ResultModel[array.length];
        for (int i=0; i < array.length; i++)         modArray[i]=new ResultModel(key,array[i]);
      }
      if (modArray != null) {
        for (int i=0; i < modArray.length; i++) {
          modList.add(modArray[i]);
        }
        this.ResultMerger(modList);
        Collections.sort(modList,new sortByWordNum());
      }
    }
    long end=System.currentTimeMillis();
    this.time+=(end - begin);
  }
  return modList;
}

Fixed version (ground truth):
public ArrayList<ResultModel> getResultSet(String key){
  int pos=key.indexOf("String_Node_Str");
  if (pos > 0) {
    symbol=1;
    String keyBefore=key.substring(0,pos);
    String keyAfter=key.substring(pos + 1,key.length());
    vecKey.add(keyBefore);
    vecKey.add(keyAfter);
    System.out.println("String_Node_Str" + keyBefore + "String_Node_Str"+ keyAfter);
    ArrayList<ResultModel> modList=new ArrayList<ResultModel>();
    ArrayList<ResultModel> modListBefore=new ArrayList<ResultModel>();
    ArrayList<ResultModel> modListAfter=new ArrayList<ResultModel>();
    if (this.hashWord.size() > 0) {
      long begin=System.currentTimeMillis();
      ResultModel[] modArray=null;
      String resultBefore=this.hashWord.get(keyBefore);
      String resultAfter=this.hashWord.get(keyAfter);
      String[] array=resultBefore.split("String_Node_Str");
      modArray=new ResultModel[array.length];
      for (int i=0; i < array.length; i++)       modArray[i]=new ResultModel(keyBefore,array[i]);
      if (modArray != null) {
        for (int i=0; i < modArray.length; i++) {
          modListBefore.add(modArray[i]);
        }
        Collections.sort(modList,new SortByWordNum());
      }
      array=resultAfter.split("String_Node_Str");
      modArray=new ResultModel[array.length];
      for (int i=0; i < array.length; i++)       modArray[i]=new ResultModel(keyAfter,array[i]);
      if (modArray != null) {
        for (int i=0; i < modArray.length; i++) {
          modListAfter.add(modArray[i]);
        }
        Collections.sort(modList,new SortByWordNum());
      }
      for (int i=0; i < modListAfter.size(); i++) {
        for (int j=0; j < modListBefore.size(); j++) {
          if (modListBefore.get(j).getUrl().equals(modListAfter.get(i).getUrl())) {
            modList.add(modListBefore.get(j));
          }
        }
      }
      long end=System.currentTimeMillis();
      this.time+=(end - begin);
    }
    return modList;
  }
  int posDiff=key.indexOf("String_Node_Str");
  if (posDiff > 0) {
    symbol=1;
    String keyBefore=key.substring(0,posDiff);
    String keyAfter=key.substring(posDiff + 1,key.length());
    vecKey.add(keyBefore);
    vecKey.add(keyAfter);
    System.out.println("String_Node_Str" + keyBefore + "String_Node_Str"+ keyAfter);
    ArrayList<ResultModel> modList=new ArrayList<ResultModel>();
    ArrayList<ResultModel> modListBefore=new ArrayList<ResultModel>();
    ArrayList<ResultModel> modListAfter=new ArrayList<ResultModel>();
    if (this.hashWord.size() > 0) {
      long begin=System.currentTimeMillis();
      ResultModel[] modArray=null;
      String resultBefore=this.hashWord.get(keyBefore);
      String resultAfter=this.hashWord.get(keyAfter);
      String[] array=resultBefore.split("String_Node_Str");
      modArray=new ResultModel[array.length];
      for (int i=0; i < array.length; i++)       modArray[i]=new ResultModel(keyBefore,array[i]);
      if (modArray != null) {
        for (int i=0; i < modArray.length; i++) {
          modListBefore.add(modArray[i]);
        }
        Collections.sort(modList,new SortByWordNum());
      }
      array=resultAfter.split("String_Node_Str");
      modArray=new ResultModel[array.length];
      for (int i=0; i < array.length; i++)       modArray[i]=new ResultModel(keyAfter,array[i]);
      if (modArray != null) {
        for (int i=0; i < modArray.length; i++) {
          modListAfter.add(modArray[i]);
        }
        Collections.sort(modList,new SortByWordNum());
      }
      for (int i=0; i < modListAfter.size(); i++) {
        for (int j=0; j < modListBefore.size(); j++) {
          if (modListBefore.get(j).getUrl().equals(modListAfter.get(i).getUrl())) {
            modListBefore.remove(j);
          }
        }
      }
      for (int i=0; i < modListBefore.size(); i++) {
        modList.add(modListBefore.get(i));
      }
      long end=System.currentTimeMillis();
      this.time+=(end - begin);
    }
    return modList;
  }
  ArrayList<ResultModel> modList=new ArrayList<ResultModel>();
  if (this.hashWord.size() > 0) {
    long begin=System.currentTimeMillis();
    ResultModel[] modArray=null;
    IKSegmenter iksegmentation=new IKSegmenter(new StringReader(key),true);
    Lexeme lexeme=null;
    try {
      while ((lexeme=iksegmentation.next()) != null) {
        System.out.println(lexeme.getLexemeText());
        vecKey.add(lexeme.getLexemeText());
      }
    }
 catch (    IOException e) {
      e.printStackTrace();
    }
    for (    String strKey : vecKey) {
      String result=this.hashWord.get(strKey);
      if (result != null) {
        String[] array=result.split("String_Node_Str");
        modArray=new ResultModel[array.length];
        for (int i=0; i < array.length; i++)         modArray[i]=new ResultModel(key,array[i]);
      }
      if (modArray != null) {
        for (int i=0; i < modArray.length; i++) {
          modList.add(modArray[i]);
        }
        this.ResultMerger(modList);
        Collections.sort(modList,new SortByWordNum());
      }
    }
    long end=System.currentTimeMillis();
    this.time+=(end - begin);
  }
  return modList;
}