Program: 72131
Project: 72131
Buggy source:
private ProjectedColumns getProjectedColumns(Integer resultSetNum,IResultSet odaResultSet) throws DataException {
  final String methodName="String_Node_Str";
  sm_logger.entering(m_nestedClassName,methodName,resultSetNum);
  ProjectedColumns projectedColumns=(ProjectedColumns)m_seqProjectedColumns.get(resultSetNum);
  if (projectedColumns != null && !m_incompleteProjectedColumns.contains(resultSetNum)) {
    sm_logger.exiting(m_nestedClassName,methodName,projectedColumns);
    return projectedColumns;
  }
  IResultSetMetaData odaRuntimeMetadata=tryGetRuntimeMetaData(resultSetNum,odaResultSet);
  boolean hasOdaRuntimeMetadata=odaRuntimeMetadata != null;
  if (!hasOdaRuntimeMetadata) {
    sm_logger.logp(Level.INFO,m_nestedClassName,methodName,"String_Node_Str" + resultSetNum);
    odaRuntimeMetadata=m_stmt.getRuntimeMetaData();
  }
  ProjectedColumns newProjectedColumns=doGetProjectedColumns(odaRuntimeMetadata);
  if (projectedColumns == null) {
    projectedColumns=newProjectedColumns;
    if (!hasOdaRuntimeMetadata)     m_incompleteProjectedColumns.add(resultSetNum);
  }
 else   if (m_incompleteProjectedColumns.contains(resultSetNum)) {
    updateProjectedColumns(newProjectedColumns,projectedColumns);
    projectedColumns=newProjectedColumns;
    if (hasOdaRuntimeMetadata)     m_incompleteProjectedColumns.remove(resultSetNum);
  }
  m_seqProjectedColumns.put(resultSetNum,projectedColumns);
  sm_logger.exiting(m_nestedClassName,methodName,projectedColumns);
  return projectedColumns;
}

Fixed version (ground truth):
private ProjectedColumns getProjectedColumns(Integer resultSetNum,IResultSet odaResultSet) throws DataException {
  final String methodName="String_Node_Str";
  sm_logger.entering(m_nestedClassName,methodName,resultSetNum);
  ProjectedColumns projectedColumns=(ProjectedColumns)m_seqProjectedColumns.get(resultSetNum);
  if (projectedColumns != null && !m_incompleteProjectedColumns.contains(resultSetNum)) {
    sm_logger.exiting(m_nestedClassName,methodName,projectedColumns);
    return projectedColumns;
  }
  IResultSetMetaData odaRuntimeMetadata=tryGetRuntimeMetaData(resultSetNum,odaResultSet);
  boolean hasOdaRuntimeMetadata=odaRuntimeMetadata != null;
  if (!hasOdaRuntimeMetadata) {
    sm_logger.logp(Level.INFO,m_nestedClassName,methodName,"String_Node_Str" + resultSetNum);
    odaRuntimeMetadata=m_stmt.getRuntimeMetaData();
  }
  ProjectedColumns newProjectedColumns=doGetProjectedColumns(odaRuntimeMetadata);
  if (projectedColumns == null) {
    List customColumns=this.m_stmt.getProjectedColumns().getCustomColumns();
    if (customColumns != null) {
      for (int i=0; i < customColumns.size(); i++) {
        CustomColumn column=(CustomColumn)customColumns.get(i);
        newProjectedColumns.addCustomColumn(column.getName(),column.getType());
      }
    }
    projectedColumns=newProjectedColumns;
    if (!hasOdaRuntimeMetadata)     m_incompleteProjectedColumns.add(resultSetNum);
  }
 else   if (m_incompleteProjectedColumns.contains(resultSetNum)) {
    updateProjectedColumns(newProjectedColumns,projectedColumns);
    projectedColumns=newProjectedColumns;
    if (hasOdaRuntimeMetadata)     m_incompleteProjectedColumns.remove(resultSetNum);
  }
  m_seqProjectedColumns.put(resultSetNum,projectedColumns);
  sm_logger.exiting(m_nestedClassName,methodName,projectedColumns);
  return projectedColumns;
}