Program: 137163
Project: 137163
Buggy source:
private void handleByARow(String[] rowValues,long currentRow,List<ModelElement> analysisElementList,List<MetadataColumn> columnElementList,EMap<Indicator,AnalyzedDataSet> indicToRowMap){
  Object object=null;
  int maxNumberRows=analysis.getParameters().getMaxNumberRows();
  int recordIncrement=0;
  element:   for (int i=0; i < analysisElementList.size(); i++) {
    MetadataColumn mColumn=(MetadataColumn)analysisElementList.get(i);
    Integer position=ColumnHelper.getColumnIndex(mColumn);
    if (position == null || position >= rowValues.length) {
      log.warn(Messages.getString("String_Node_Str",mColumn.getLabel(),currentRow,delimitedFileconnection.getFilePath()));
      if (!isBablyForm) {
        isBablyForm=true;
        Display.getDefault().asyncExec(new Runnable(){
          public void run(){
            MessageDialog.openWarning(null,Messages.getString("String_Node_Str"),Messages.getString("String_Node_Str"));
          }
        }
);
      }
      continue;
    }
    object=TalendTypeConvert.convertToObject(mColumn.getTalendType(),rowValues[position],mColumn.getPattern());
    List<Indicator> indicators=getIndicators(mColumn.getLabel());
    for (    Indicator indicator : indicators) {
      indicator.setDrillDownLimitSize(Long.valueOf(maxNumberRows));
      if (!continueRun()) {
        break element;
      }
      if (object == null && !(indicator instanceof RowCountIndicator)) {
        continue element;
      }
      if (indicator instanceof DuplicateCountIndicator) {
        ((DuplicateCountIndicator)indicator).handle(object,rowValues);
      }
 else {
        indicator.handle(object);
      }
      AnalyzedDataSet analyzedDataSet=indicToRowMap.get(indicator);
      if (analyzedDataSet == null) {
        analyzedDataSet=AnalysisFactory.eINSTANCE.createAnalyzedDataSet();
        indicToRowMap.put(indicator,analyzedDataSet);
        analyzedDataSet.setDataCount(maxNumberRows);
        analyzedDataSet.setRecordSize(0);
      }
      if (analysis.getParameters().isStoreData()) {
        if (indicator.mustStoreRow()) {
          List<Object[]> valueObjectList=initDataSet(indicator,indicToRowMap,object);
          recordIncrement=valueObjectList.size();
          for (int j=0; j < rowValues.length; j++) {
            Object newobject=rowValues[j];
            if (indicator.isUsedMapDBMode()) {
              indicator.handleDrillDownData(object,newobject,rowValues.length,j,mColumn.getLabel());
              continue;
            }
 else {
              if (recordIncrement < maxNumberRows) {
                if (recordIncrement < valueObjectList.size()) {
                  valueObjectList.get(recordIncrement)[j]=newobject;
                }
 else {
                  Object[] valueObject=new Object[rowValues.length];
                  valueObject[j]=newobject;
                  valueObjectList.add(valueObject);
                }
              }
 else {
                break;
              }
            }
          }
        }
 else         if (indicator instanceof UniqueCountIndicator && analysis.getResults().getIndicToRowMap().get(indicator).getData() != null) {
          List<Object[]> removeValueObjectList=analysis.getResults().getIndicToRowMap().get(indicator).getData();
          if (columnElementList.size() == 0) {
            continue;
          }
          int offsetting=columnElementList.indexOf(indicator.getAnalyzedElement());
          for (          Object[] dataObject : removeValueObjectList) {
            if (object instanceof Integer) {
              if (object.equals(Integer.parseInt((String)dataObject[offsetting]))) {
                removeValueObjectList.remove(dataObject);
                break;
              }
            }
            if (dataObject[offsetting].equals(object)) {
              removeValueObjectList.remove(dataObject);
              break;
            }
          }
        }
      }
    }
  }
}

Fixed version (ground truth):
private void handleByARow(String[] rowValues,long currentRow,List<ModelElement> analysisElementList,List<MetadataColumn> columnElementList,EMap<Indicator,AnalyzedDataSet> indicToRowMap){
  Object object=null;
  int maxNumberRows=analysis.getParameters().getMaxNumberRows();
  int recordIncrement=0;
  element:   for (int i=0; i < analysisElementList.size(); i++) {
    MetadataColumn mColumn=(MetadataColumn)analysisElementList.get(i);
    Integer position=ColumnHelper.getColumnIndex(mColumn);
    if (position == null || position >= rowValues.length) {
      log.warn(Messages.getString("String_Node_Str",mColumn.getLabel(),currentRow,delimitedFileconnection.getFilePath()));
      if (!isBablyForm) {
        isBablyForm=true;
        Display.getDefault().asyncExec(new Runnable(){
          public void run(){
            MessageDialog.openWarning(null,Messages.getString("String_Node_Str"),Messages.getString("String_Node_Str"));
          }
        }
);
      }
      continue;
    }
    object=TalendTypeConvert.convertToObject(mColumn.getTalendType(),rowValues[position],mColumn.getPattern());
    List<Indicator> indicators=getIndicators(mColumn.getLabel());
    for (    Indicator indicator : indicators) {
      indicator.setDrillDownLimitSize(Long.valueOf(maxNumberRows));
      if (!continueRun()) {
        break element;
      }
      if (object == null && !(indicator instanceof RowCountIndicator)) {
        continue element;
      }
      if (indicator instanceof DuplicateCountIndicator) {
        ((DuplicateCountIndicator)indicator).handle(object,rowValues);
      }
 else {
        indicator.handle(object);
      }
      AnalyzedDataSet analyzedDataSet=indicToRowMap.get(indicator);
      if (analyzedDataSet == null) {
        analyzedDataSet=AnalysisFactory.eINSTANCE.createAnalyzedDataSet();
        indicToRowMap.put(indicator,analyzedDataSet);
        analyzedDataSet.setDataCount(maxNumberRows);
        analyzedDataSet.setRecordSize(0);
      }
      if (analysis.getParameters().isStoreData()) {
        if (indicator.mustStoreRow()) {
          List<Object[]> valueObjectList=initDataSet(indicator,indicToRowMap,object);
          recordIncrement=valueObjectList.size();
          List<Object> inputRowList=new ArrayList<Object>();
          for (int j=0; j < rowValues.length; j++) {
            Object newobject=rowValues[j];
            if (indicator.isUsedMapDBMode()) {
              inputRowList.add(newobject == null ? PluginConstant.NULL_STRING : newobject);
              continue;
            }
 else {
              if (recordIncrement < maxNumberRows) {
                if (recordIncrement < valueObjectList.size()) {
                  valueObjectList.get(recordIncrement)[j]=newobject;
                }
 else {
                  Object[] valueObject=new Object[rowValues.length];
                  valueObject[j]=newobject;
                  valueObjectList.add(valueObject);
                }
              }
 else {
                break;
              }
            }
          }
          if (indicator.isUsedMapDBMode()) {
            indicator.handleDrillDownData(object,inputRowList);
          }
        }
 else         if (indicator instanceof UniqueCountIndicator && analysis.getResults().getIndicToRowMap().get(indicator).getData() != null) {
          List<Object[]> removeValueObjectList=analysis.getResults().getIndicToRowMap().get(indicator).getData();
          if (columnElementList.size() == 0) {
            continue;
          }
          int offsetting=columnElementList.indexOf(indicator.getAnalyzedElement());
          for (          Object[] dataObject : removeValueObjectList) {
            if (object instanceof Integer) {
              if (object.equals(Integer.parseInt((String)dataObject[offsetting]))) {
                removeValueObjectList.remove(dataObject);
                break;
              }
            }
            if (dataObject[offsetting].equals(object)) {
              removeValueObjectList.remove(dataObject);
              break;
            }
          }
        }
      }
    }
  }
}