Program: 15488
Project: 15488
Buggy source:
public static void main(String[] args) throws Exception {
  if (args.length < 3) {
    printHelp();
    System.exit(-1);
  }
  final double errorMargin=Double.parseDouble(args[0]);
  final File referenceFile=new File(args[1]);
  final File checkedFile=new File(args[2]);
  final boolean debug=(args.length > 3 && args[3].equals("String_Node_Str"));
  boolean passed=true;
  BufferedReader checkedReader=null;
  BufferedReader refReader=null;
  try {
    checkedReader=new BufferedReader(new FileReader(checkedFile));
    refReader=new BufferedReader(new FileReader(referenceFile));
    final List<ReferenceLine> refLines=new ArrayList<ReferenceLine>();
    int refLineNum=0;
    for (String line=refReader.readLine(); line != null; line=refReader.readLine()) {
      if (line.length() == 0) {
        continue;
      }
      ReferenceLine refLine=null;
      try {
        refLine=ReferenceLine.parseLine(line);
      }
 catch (      ParseException pe) {
        System.err.println("String_Node_Str" + refLineNum);
        pe.printStackTrace(System.err);
        System.exit(-1);
      }
      if (refLine != null)       refLines.add(refLine);
      refLineNum++;
    }
    String[] fields;
    int lineCnt=0;
    refLineNum=0;
    outerLoop:     for (String line=checkedReader.readLine(); line != null; line=checkedReader.readLine()) {
      fields=line.split("String_Node_Str");
      refLineNum=0;
      for (      ReferenceLine refLine : refLines) {
        if (debug)         System.err.println("String_Node_Str" + refLine.shouldMatch(fields));
        if (debug)         System.err.println("String_Node_Str" + refLine.doesMatch(fields,errorMargin));
        passed=passed && (refLine.shouldMatch(fields) ? refLine.doesMatch(fields,errorMargin) : true);
        if (!passed) {
          System.err.printf("String_Node_Str",lineCnt,refLineNum);
          break outerLoop;
        }
        refLineNum++;
      }
      lineCnt++;
    }
  }
  finally {
    if (checkedReader != null)     checkedReader.close();
    if (refReader != null)     refReader.close();
  }
  System.exit(passed ? 0 : 1);
}

Fixed version (ground truth):
public static void main(String[] args) throws Exception {
  if (args.length < 3) {
    printHelp();
    System.exit(-1);
  }
  final double errorMargin=Double.parseDouble(args[0]);
  final File referenceFile=new File(args[1]);
  final File checkedFile=new File(args[2]);
  debug=(args.length > 3 && args[3].equals("String_Node_Str"));
  boolean passed=true;
  BufferedReader checkedReader=null;
  BufferedReader refReader=null;
  try {
    checkedReader=new BufferedReader(new FileReader(checkedFile));
    refReader=new BufferedReader(new FileReader(referenceFile));
    final List<ReferenceLine> refLines=new ArrayList<ReferenceLine>();
    int refLineNum=0;
    for (String line=refReader.readLine(); line != null; line=refReader.readLine()) {
      if (line.length() == 0) {
        continue;
      }
      ReferenceLine refLine=null;
      try {
        refLine=ReferenceLine.parseLine(line);
      }
 catch (      ParseException pe) {
        System.err.println("String_Node_Str" + refLineNum);
        pe.printStackTrace(System.err);
        System.exit(-1);
      }
      if (refLine != null)       refLines.add(refLine);
      refLineNum++;
    }
    String[] fields;
    int lineCnt=0;
    refLineNum=0;
    outerLoop:     for (String line=checkedReader.readLine(); line != null; line=checkedReader.readLine()) {
      fields=line.split("String_Node_Str");
      refLineNum=0;
      for (      ReferenceLine refLine : refLines) {
        final boolean shouldMatch=refLine.shouldMatch(fields);
        final boolean doesMatch=(shouldMatch ? refLine.doesMatch(fields,errorMargin) : false);
        if (debug)         System.err.printf("String_Node_Str",refLineNum,lineCnt,shouldMatch,doesMatch);
        passed=passed && (shouldMatch ? doesMatch : true);
        if (!passed) {
          System.err.printf("String_Node_Str",lineCnt,refLineNum);
          break outerLoop;
        }
        refLineNum++;
      }
      lineCnt++;
    }
  }
  finally {
    if (checkedReader != null)     checkedReader.close();
    if (refReader != null)     refReader.close();
  }
  System.exit(passed ? 0 : 1);
}