Program: 167460
Project: 167460
Buggy source:
@Override public void handle(Message inputMessage,IMessageTarget messageTarget){
  getComponentStatistics().incrementInboundMessages();
  String currentLine;
  int linesRead=0;
  int numberMessages=0;
  List<String> files=new ArrayList<String>();
  if (getFileNameFromMessage) {
    List<String> fullyQualifiedFiles=inputMessage.getPayload();
    String path=getResourceRuntime().getResource().get(LocalFile.LOCALFILE_PATH);
    for (    String fullyQualifiedFile : fullyQualifiedFiles) {
      if (fullyQualifiedFile.startsWith(path)) {
        files.add(fullyQualifiedFile.substring(path.length()));
      }
 else {
        files.add(fullyQualifiedFile);
      }
    }
  }
 else {
    files.add(relativePathAndFile);
  }
  filesRead.addAll(files);
  for (  String file : files) {
    InputStream inStream=null;
    BufferedReader reader=null;
    int linesInMessage=0;
    try {
      IStreamable resource=(IStreamable)getResourceReference();
      String filePath=FormatUtils.replaceTokens(file,context.getFlowParametersAsString(),true);
      inStream=resource.getInputStream(filePath,mustExist);
      reader=new BufferedReader(new InputStreamReader(inStream,encoding));
      ArrayList<String> payload=new ArrayList<String>();
      while ((currentLine=reader.readLine()) != null) {
        linesRead++;
        if (linesRead > textHeaderLinesToSkip) {
          if (linesInMessage >= textRowsPerMessage) {
            initAndSendMessage(payload,inputMessage,messageTarget,numberMessages,false);
            linesInMessage=0;
            payload=new ArrayList<String>();
          }
          getComponentStatistics().incrementNumberEntitiesProcessed();
          payload.add(currentLine);
          linesInMessage++;
        }
      }
      initAndSendMessage(payload,inputMessage,messageTarget,numberMessages,true);
    }
 catch (    IOException e) {
      throw new IoException("String_Node_Str" + e.getMessage());
    }
 finally {
      IOUtils.closeQuietly(reader);
      IOUtils.closeQuietly(inStream);
    }
  }
}

Fixed version (ground truth):
@Override public void handle(Message inputMessage,IMessageTarget messageTarget){
  getComponentStatistics().incrementInboundMessages();
  String currentLine;
  int linesRead=0;
  int numberMessages=0;
  List<String> files=new ArrayList<String>();
  if (getFileNameFromMessage) {
    List<String> fullyQualifiedFiles=inputMessage.getPayload();
    String path=getResourceRuntime().getAgentOverrides().get(LocalFile.LOCALFILE_PATH);
    for (    String fullyQualifiedFile : fullyQualifiedFiles) {
      if (fullyQualifiedFile.startsWith(path)) {
        files.add(fullyQualifiedFile.substring(path.length()));
      }
 else {
        files.add(fullyQualifiedFile);
      }
    }
  }
 else {
    files.add(relativePathAndFile);
  }
  filesRead.addAll(files);
  for (  String file : files) {
    InputStream inStream=null;
    BufferedReader reader=null;
    int linesInMessage=0;
    try {
      IStreamable resource=(IStreamable)getResourceReference();
      String filePath=FormatUtils.replaceTokens(file,context.getFlowParametersAsString(),true);
      inStream=resource.getInputStream(filePath,mustExist);
      reader=new BufferedReader(new InputStreamReader(inStream,encoding));
      ArrayList<String> payload=new ArrayList<String>();
      while ((currentLine=reader.readLine()) != null) {
        linesRead++;
        if (linesRead > textHeaderLinesToSkip) {
          if (linesInMessage >= textRowsPerMessage) {
            initAndSendMessage(payload,inputMessage,messageTarget,numberMessages,false);
            linesInMessage=0;
            payload=new ArrayList<String>();
          }
          getComponentStatistics().incrementNumberEntitiesProcessed();
          payload.add(currentLine);
          linesInMessage++;
        }
      }
      initAndSendMessage(payload,inputMessage,messageTarget,numberMessages,true);
    }
 catch (    IOException e) {
      throw new IoException("String_Node_Str" + e.getMessage());
    }
 finally {
      IOUtils.closeQuietly(reader);
      IOUtils.closeQuietly(inStream);
    }
  }
}