Program: 40836
Project: 40836
Buggy source:
public static void main(String[] args) throws Exception {
  if (args.length < 2) {
    System.err.println("String_Node_Str");
    System.exit(1);
  }
  String filename=args[0];
  int numRead=Integer.parseInt(args[1]);
  File f=new File(filename);
  DatumReader<ModeSEncodedMessage> datumReader=new SpecificDatumReader<ModeSEncodedMessage>(ModeSEncodedMessage.class);
  DataFileReader<ModeSEncodedMessage> fileReader=new DataFileReader<ModeSEncodedMessage>(f,datumReader);
  ExampleDecoder decoder=new ExampleDecoder();
  ModeSEncodedMessage record=new ModeSEncodedMessage();
  int minTime=Integer.MAX_VALUE;
  int maxTime=0;
  long msgCount=0;
  Set<Integer> serials=new HashSet<Integer>();
  while (fileReader.hasNext()) {
    record=fileReader.next(record);
    msgCount++;
    serials.add(record.getSensorSerialNumber());
    maxTime=Math.max(record.getTimeAtServer().intValue(),maxTime);
    minTime=Math.min(record.getTimeAtServer().intValue(),minTime);
    if (--numRead >= 0) {
      System.out.println("String_Node_Str" + msgCount + "String_Node_Str");
      for (      Field field : record.getSchema().getFields()) {
        if (record.get(field.name()) != null)         System.out.printf("String_Node_Str",field.name() + "String_Node_Str",record.get(field.name()));
      }
      System.out.println("String_Node_Str" + msgCount + "String_Node_Str");
      decoder.decodeMsg(record.getTimeAtServer(),record.getRawMessage().toString());
    }
  }
  fileReader.close();
  System.out.println("String_Node_Str");
  System.out.println("String_Node_Str");
  System.out.printf("String_Node_Str","String_Node_Str",new Date(((long)minTime) * 1000l).toString());
  System.out.printf("String_Node_Str","String_Node_Str",new Date(((long)maxTime) * 1000l).toString());
  System.out.printf("String_Node_Str","String_Node_Str",msgCount);
  System.out.printf("String_Node_Str","String_Node_Str",serials.size());
}

Fixed version (ground truth):
public static void main(String[] args) throws Exception {
  if (args.length < 2) {
    System.err.println("String_Node_Str");
    System.exit(1);
  }
  String filename=args[0];
  int numRead=Integer.parseInt(args[1]);
  File f=new File(filename);
  DatumReader<ModeSEncodedMessage> datumReader=new SpecificDatumReader<ModeSEncodedMessage>(ModeSEncodedMessage.class);
  DataFileReader<ModeSEncodedMessage> fileReader=new DataFileReader<ModeSEncodedMessage>(f,datumReader);
  ExampleDecoder decoder=new ExampleDecoder();
  ModeSEncodedMessage record=new ModeSEncodedMessage();
  int minTime=Integer.MAX_VALUE;
  int maxTime=0;
  long msgCount=0;
  Set<Integer> serials=new HashSet<Integer>();
  while (fileReader.hasNext()) {
    record=fileReader.next(record);
    msgCount++;
    serials.add(record.getSensorSerialNumber());
    maxTime=Math.max(record.getTimeAtServer().intValue(),maxTime);
    minTime=Math.min(record.getTimeAtServer().intValue(),minTime);
    if (--numRead >= 0) {
      System.out.println("String_Node_Str" + msgCount + "String_Node_Str");
      for (      Field field : record.getSchema().getFields()) {
        if (record.get(field.name()) != null)         System.out.printf("String_Node_Str",field.name() + "String_Node_Str",record.get(field.name()));
      }
      System.out.println("String_Node_Str" + msgCount + "String_Node_Str");
      decoder.decodeMsg(record.getTimeAtServer(),record.getRawMessage().toString(),null);
    }
  }
  fileReader.close();
  System.out.println("String_Node_Str");
  System.out.println("String_Node_Str");
  System.out.printf("String_Node_Str","String_Node_Str",new Date(((long)minTime) * 1000l).toString());
  System.out.printf("String_Node_Str","String_Node_Str",new Date(((long)maxTime) * 1000l).toString());
  System.out.printf("String_Node_Str","String_Node_Str",msgCount);
  System.out.printf("String_Node_Str","String_Node_Str",serials.size());
}