Program: 12040
Project: 12040
Buggy source:
@Override public CloneGroupList readInputFile() throws InvalidInputFileException {
  CloneGroupList cloneGroups=new CloneGroupList();
  for (  Integer cloneGroupID : this.allCloneGroupIDs) {
    if (isOperationCanceled())     break;
    String filePath=this.getToolOutputFilePath() + "String_Node_Str" + cloneGroupID+ "String_Node_Str";
    CloneGroup cloneGroup=new CloneGroup(cloneGroupID);
    String fileContents=readFileContents(filePath);
    Pattern pattern=Pattern.compile("String_Node_Str");
    Matcher cloneMatcher=pattern.matcher(fileContents);
    int cloneCount=0;
    while (cloneMatcher.find()) {
      try {
        int cloneLineCount=Integer.parseInt(cloneMatcher.group(2));
        int startLine=Integer.parseInt(cloneMatcher.group(3));
        int endLine=startLine + cloneLineCount - 1;
        String cloneFilePath=cloneMatcher.group(4);
        cloneCount++;
        CloneInstance cloneInstance=getCloneInstance(cloneFilePath,cloneCount,true,startLine,0,endLine,0);
        cloneGroup.addClone(cloneInstance);
      }
 catch (      NullPointerException npex) {
        addExceptionHappenedDuringParsing(npex);
      }
catch (      NumberFormatException nfex) {
        addExceptionHappenedDuringParsing(nfex);
      }
catch (      JavaModelException jme) {
        addExceptionHappenedDuringParsing(jme);
      }
catch (      ICompilationUnitNotFoundException infe) {
        addExceptionHappenedDuringParsing(infe);
      }
    }
    if (cloneGroup.getCloneGroupSize() > 0)     cloneGroups.add(cloneGroup);
 else     throw new InvalidInputFileException();
    progress(cloneGroupID);
  }
  return cloneGroups;
}

Fixed version (ground truth):
@Override public CloneGroupList readInputFile() throws InvalidInputFileException {
  CloneGroupList cloneGroups=new CloneGroupList();
  for (  Integer cloneGroupID : this.allCloneGroupIDs) {
    if (isOperationCanceled())     break;
    String filePath=this.getToolOutputFilePath() + "String_Node_Str" + cloneGroupID+ "String_Node_Str";
    CloneGroup cloneGroup=new CloneGroup(cloneGroupID);
    String fileContents=readFileContents(filePath);
    Pattern pattern=Pattern.compile("String_Node_Str");
    Matcher cloneMatcher=pattern.matcher(fileContents);
    int cloneCount=0;
    while (cloneMatcher.find()) {
      try {
        int cloneLineCount=Integer.parseInt(cloneMatcher.group(2));
        int startLine=Integer.parseInt(cloneMatcher.group(3));
        int endLine=startLine + cloneLineCount - 1;
        String cloneFilePath=cloneMatcher.group(4);
        cloneCount++;
        CloneInstance cloneInstance=getCloneInstance(cloneFilePath,cloneCount,true,startLine,0,endLine,0);
        cloneGroup.addClone(cloneInstance);
      }
 catch (      NullPointerException npex) {
        addExceptionHappenedDuringParsing(npex);
      }
catch (      NumberFormatException nfex) {
        addExceptionHappenedDuringParsing(nfex);
      }
catch (      JavaModelException jme) {
        addExceptionHappenedDuringParsing(jme);
      }
catch (      ICompilationUnitNotFoundException infe) {
        addExceptionHappenedDuringParsing(infe);
      }
    }
    if (cloneGroup.getCloneGroupSize() > 0)     cloneGroups.add(cloneGroup);
    progress(cloneGroupID);
  }
  if (cloneGroups.getCloneGroupsCount() == 0)   throw new InvalidInputFileException();
  return cloneGroups;
}