Program: 163222
Project: 163222
Buggy source:
/** 
 * Gets all values parsed in the   {@link ParserOutput#parsedValues} array
 * @return the sequence of parsed values in a record.
 */
public String[] rowParsed(){
  if (column > 0) {
    if (!columnsToExtractInitialized) {
      initializeHeaders();
      if (settings.isHeaderExtractionEnabled()) {
        Arrays.fill(parsedValues,null);
        column=0;
        this.appender=appenders[0];
        return null;
      }
 else       if (!columnsReordered && selectedIndexes != null) {
        String[] out=new String[column];
        for (int i=0; i < selectedIndexes.length; i++) {
          int index=selectedIndexes[i];
          if (index < column) {
            out[index]=parsedValues[index];
          }
        }
        column=0;
        return out;
      }
    }
    currentRecord++;
    if (columnsReordered) {
      String[] reorderedValues=new String[selectedIndexes.length];
      for (int i=0; i < selectedIndexes.length; i++) {
        int index=selectedIndexes[i];
        if (index >= column || index == -1) {
          reorderedValues[i]=nullValue;
        }
 else {
          reorderedValues[i]=parsedValues[index];
        }
      }
      column=0;
      this.appender=appenders[0];
      return reorderedValues;
    }
 else {
      String[] out=new String[column];
      System.arraycopy(parsedValues,0,out,0,column);
      column=0;
      this.appender=appenders[0];
      return out;
    }
  }
 else   if (!skipEmptyLines) {
    if (!columnsToExtractInitialized) {
      initializeHeaders();
    }
    currentRecord++;
    if (columnsReordered) {
      String[] out=new String[selectedIndexes.length];
      Arrays.fill(out,nullValue);
      return out;
    }
    return ArgumentUtils.EMPTY_STRING_ARRAY;
  }
  return null;
}

Fixed version (ground truth):
/** 
 * Gets all values parsed in the   {@link ParserOutput#parsedValues} array
 * @return the sequence of parsed values in a record.
 */
public String[] rowParsed(){
  if (column > 0) {
    if (!columnsToExtractInitialized) {
      initializeHeaders();
      if (settings.isHeaderExtractionEnabled()) {
        Arrays.fill(parsedValues,null);
        column=0;
        this.appender=appenders[0];
        return null;
      }
 else       if (!columnsReordered && selectedIndexes != null) {
        String[] out=new String[column];
        for (int i=0; i < selectedIndexes.length; i++) {
          int index=selectedIndexes[i];
          if (index < column) {
            out[index]=parsedValues[index];
          }
        }
        column=0;
        return out;
      }
    }
    currentRecord++;
    if (columnsReordered) {
      String[] reorderedValues=new String[selectedIndexes.length];
      for (int i=0; i < selectedIndexes.length; i++) {
        int index=selectedIndexes[i];
        if (index >= column || index == -1) {
          reorderedValues[i]=nullValue;
        }
 else {
          reorderedValues[i]=parsedValues[index];
        }
      }
      column=0;
      this.appender=appenders[0];
      return reorderedValues;
    }
 else {
      int last=columnReorderingEnabledSetting ? column : column < headers.length ? headers.length : column;
      String[] out=new String[last];
      System.arraycopy(parsedValues,0,out,0,column);
      column=0;
      this.appender=appenders[0];
      return out;
    }
  }
 else   if (!skipEmptyLines) {
    if (!columnsToExtractInitialized) {
      initializeHeaders();
    }
    currentRecord++;
    if (columnsReordered) {
      String[] out=new String[selectedIndexes.length];
      Arrays.fill(out,nullValue);
      return out;
    }
    return ArgumentUtils.EMPTY_STRING_ARRAY;
  }
  return null;
}