Program: 12023
Project: 12023
Buggy source:
/** 
 * Get the information on the unimplemented test methods.
 * @param testTargetClassname test target class name
 * @param testTarget test target class source code file
 * @param testCase test class source code file
 * @return the information on test class with the unimplemented test methods
 * @throws Exception
 */
public static ClassInfo getClassInfoWithUnimplementedTestMethods(String testTargetClassname,IFile testTarget,IFile testCase) throws Exception {
  PreferenceLoader pref=new PreferenceLoader(store);
  ClassInfo classInfo=new ClassInfo();
  List<MethodInfo> unimplementedMethodNames=new ArrayList<MethodInfo>();
  if (pref.isTestMethodGenEnabled) {
    ClassInfo expectedClassInfo=getTestClassInfoFromTargetClass(testTargetClassname,testTarget);
    List<MethodInfo> expectedMethods=expectedClassInfo.methods;
    ClassInfo actualClassInfo=getMethodNamesAlreadyExists(testCase);
    List<MethodInfo> actualMethods=actualClassInfo.methods;
    for (    MethodInfo expected : expectedMethods) {
      boolean exist=false;
      for (      MethodInfo actual : actualMethods) {
        String escapedExp=expected.testMethodName.replace(StrConst.testMethodPrefix4Version3,StrConst.empty).replaceAll("String_Node_Str","String_Node_Str").replaceAll("String_Node_Str",StrConst.empty);
        if (actual.testMethodName.matches("String_Node_Str" + escapedExp + "String_Node_Str")) {
          exist=true;
          break;
        }
      }
      if (!exist)       unimplementedMethodNames.add(expected);
    }
    if (pref.isTestMethodGenNotBlankEnabled) {
      List<String> notImportedList=new ArrayList<String>();
      List<String> expImportedList=expectedClassInfo.importList;
      List<String> actImportedList=actualClassInfo.importList;
      for (      String expImported : expImportedList) {
        boolean found=false;
        for (        String actImported : actImportedList) {
          if (expImported.equals(actImported)) {
            found=true;
            break;
          }
        }
        if (!found)         notImportedList.add(expImported);
 else         notImportedList.add("String_Node_Str" + expImported);
      }
      classInfo.importList=notImportedList;
      classInfo.importList=setupRequiredImports(pref,actImportedList,classInfo.importList);
    }
    classInfo.constructors=expectedClassInfo.constructors;
  }
  classInfo.methods=unimplementedMethodNames;
  return classInfo;
}

Fixed version (ground truth):
/** 
 * Get the information on the unimplemented test methods.
 * @param testTargetClassname test target class name
 * @param testTarget test target class source code file
 * @param testCase test class source code file
 * @return the information on test class with the unimplemented test methods
 * @throws Exception
 */
public static ClassInfo getClassInfoWithUnimplementedTestMethods(String testTargetClassname,IFile testTarget,IFile testCase) throws Exception {
  PreferenceLoader pref=new PreferenceLoader(store);
  ClassInfo classInfo=new ClassInfo();
  List<MethodInfo> unimplementedMethodNames=new ArrayList<MethodInfo>();
  if (pref.isTestMethodGenEnabled) {
    ClassInfo expectedClassInfo=getTestClassInfoFromTargetClass(testTargetClassname,testTarget);
    List<MethodInfo> expectedMethods=expectedClassInfo.methods;
    ClassInfo actualClassInfo=getMethodNamesAlreadyExists(testCase);
    List<MethodInfo> actualMethods=actualClassInfo.methods;
    for (    MethodInfo expected : expectedMethods) {
      if (!isAlreadyExistInActualTestCase(expected.methodName,actualMethods)) {
        unimplementedMethodNames.add(expected);
      }
    }
    if (pref.isTestMethodGenNotBlankEnabled) {
      List<String> notImportedList=new ArrayList<String>();
      List<String> expImportedList=expectedClassInfo.importList;
      List<String> actImportedList=actualClassInfo.importList;
      for (      String expImported : expImportedList) {
        boolean found=false;
        for (        String actImported : actImportedList) {
          if (expImported.equals(actImported)) {
            found=true;
            break;
          }
        }
        if (!found)         notImportedList.add(expImported);
 else         notImportedList.add("String_Node_Str" + expImported);
      }
      classInfo.importList=notImportedList;
      classInfo.importList=setupRequiredImports(pref,actImportedList,classInfo.importList);
    }
    classInfo.constructors=expectedClassInfo.constructors;
  }
  classInfo.methods=unimplementedMethodNames;
  return classInfo;
}