Program: 31795
Project: 31795
Buggy source:
public EvalNormUDF(String source,String pathModelConfig,String pathColumnConfig,String evalSetName) throws IOException {
  super(source,pathModelConfig,pathColumnConfig);
  evalConfig=modelConfig.getEvalConfigByName(evalSetName);
  if (StringUtils.isBlank(evalConfig.getDataSet().getHeaderPath())) {
    throw new RuntimeException("String_Node_Str");
  }
  this.headers=CommonUtils.getFinalHeaders(evalConfig);
  Set<String> evalNamesSet=new HashSet<String>(Arrays.asList(this.headers));
  this.outputNames=new ArrayList<String>();
  if (StringUtils.isNotBlank(evalConfig.getDataSet().getTargetColumnName())) {
    outputNames.add(evalConfig.getDataSet().getTargetColumnName());
  }
 else {
    outputNames.add(modelConfig.getTargetColumnName());
  }
  if (StringUtils.isNotBlank(evalConfig.getDataSet().getWeightColumnName())) {
    outputNames.add(evalConfig.getDataSet().getWeightColumnName());
  }
 else {
    outputNames.add("String_Node_Str");
  }
  for (  ColumnConfig columnConfig : this.columnConfigList) {
    columnConfigMap.put(columnConfig.getColumnName(),columnConfig);
  }
  List<String> allMetaColumns=evalConfig.getAllMetaColumns(modelConfig);
  for (  String meta : allMetaColumns) {
    if (evalNamesSet.contains(meta)) {
      if (!outputNames.contains(meta)) {
        outputNames.add(meta);
        validMetaSize+=1;
      }
    }
 else {
      throw new RuntimeException("String_Node_Str" + meta + "String_Node_Str");
    }
  }
  int[] inputOutputIndex=DTrainUtils.getNumericAndCategoricalInputAndOutputCounts(this.columnConfigList);
  boolean isAfterVarSelect=(inputOutputIndex[3] == 1);
  for (  ColumnConfig columnConfig : this.columnConfigList) {
    if (isAfterVarSelect) {
      if (columnConfig.isFinalSelect() && (!columnConfig.isMeta() && !columnConfig.isTarget())) {
        if (evalNamesSet.contains(columnConfig.getColumnName())) {
          if (!outputNames.contains(columnConfig.getColumnName())) {
            outputNames.add(columnConfig.getColumnName());
          }
        }
 else {
          throw new RuntimeException("String_Node_Str" + columnConfig.getColumnName() + "String_Node_Str");
        }
      }
    }
 else {
      if (!columnConfig.isMeta() && !columnConfig.isTarget()) {
        if (evalNamesSet.contains(columnConfig.getColumnName())) {
          if (!outputNames.contains(columnConfig.getColumnName())) {
            outputNames.add(columnConfig.getColumnName());
          }
        }
 else {
          throw new RuntimeException("String_Node_Str" + columnConfig.getColumnName() + "String_Node_Str");
        }
      }
    }
  }
}

Fixed version (ground truth):
public EvalNormUDF(String source,String pathModelConfig,String pathColumnConfig,String evalSetName,String scale) throws IOException {
  super(source,pathModelConfig,pathColumnConfig);
  evalConfig=modelConfig.getEvalConfigByName(evalSetName);
  if (StringUtils.isBlank(evalConfig.getDataSet().getHeaderPath())) {
    throw new RuntimeException("String_Node_Str");
  }
  this.headers=CommonUtils.getFinalHeaders(evalConfig);
  Set<String> evalNamesSet=new HashSet<String>(Arrays.asList(this.headers));
  this.outputNames=new ArrayList<String>();
  if (StringUtils.isNotBlank(evalConfig.getDataSet().getTargetColumnName())) {
    outputNames.add(evalConfig.getDataSet().getTargetColumnName());
  }
 else {
    outputNames.add(modelConfig.getTargetColumnName());
  }
  if (StringUtils.isNotBlank(evalConfig.getDataSet().getWeightColumnName())) {
    outputNames.add(evalConfig.getDataSet().getWeightColumnName());
  }
 else {
    outputNames.add("String_Node_Str");
  }
  List<String> allMetaColumns=evalConfig.getAllMetaColumns(modelConfig);
  for (  String meta : allMetaColumns) {
    if (evalNamesSet.contains(meta)) {
      if (!outputNames.contains(meta)) {
        outputNames.add(meta);
        validMetaSize+=1;
      }
    }
 else {
      throw new RuntimeException("String_Node_Str" + meta + "String_Node_Str");
    }
  }
  for (  ColumnConfig columnConfig : this.columnConfigList) {
    columnConfigMap.put(columnConfig.getColumnName(),columnConfig);
    if (columnConfig.isFinalSelect() && !outputNames.contains(columnConfig.getColumnName())) {
      validMetaSize+=1;
      outputNames.add(columnConfig.getColumnName());
    }
  }
  int[] inputOutputIndex=DTrainUtils.getNumericAndCategoricalInputAndOutputCounts(this.columnConfigList);
  boolean isAfterVarSelect=(inputOutputIndex[3] == 1);
  for (  ColumnConfig columnConfig : this.columnConfigList) {
    if (isAfterVarSelect) {
      if (columnConfig.isFinalSelect() && (!columnConfig.isMeta() && !columnConfig.isTarget())) {
        if (evalNamesSet.contains(columnConfig.getColumnName())) {
          outputNames.add(columnConfig.getColumnName());
        }
 else {
          throw new RuntimeException("String_Node_Str" + columnConfig.getColumnName() + "String_Node_Str");
        }
      }
    }
 else {
      if (!columnConfig.isMeta() && !columnConfig.isTarget()) {
        if (evalNamesSet.contains(columnConfig.getColumnName())) {
          outputNames.add(columnConfig.getColumnName());
        }
 else {
          throw new RuntimeException("String_Node_Str" + columnConfig.getColumnName() + "String_Node_Str");
        }
      }
    }
  }
  this.scoreName=this.evalConfig.getPerformanceScoreSelector();
  if (StringUtils.isBlank(this.scoreName) || this.scoreName.equalsIgnoreCase("String_Node_Str")) {
    this.scIndex=-1;
  }
 else {
    try {
      this.scIndex=Integer.parseInt(this.scoreName.toLowerCase().replaceAll("String_Node_Str","String_Node_Str"));
    }
 catch (    Exception e) {
      throw new RuntimeException("String_Node_Str" + this.scoreName);
    }
  }
  this.scale=scale;
}