Program: 25120
Project: 25120
Buggy source:
/** 
 * Resolves the given column, that's to say searches for the corresponding   {@link DBColumn}.
 * @param column		The column to resolve.
 * @param dbColumns		List of all available {@link DBColumn}s.
 * @return				The corresponding {@link DBColumn} if found, <i>null</i> otherwise.
 * @throws ParseException	An {@link UnresolvedColumnException} if the given column can't be resolvedor an  {@link UnresolvedTableException} if its table reference can't be resolved.
 */
protected DBColumn resolveColumn(final ADQLColumn column,final SearchColumnList dbColumns) throws ParseException {
  ArrayList<DBColumn> foundColumns=dbColumns.search(column);
  if (foundColumns.size() == 1)   return foundColumns.get(0);
 else   if (foundColumns.size() > 1) {
    if (column.getTableName() == null)     throw new UnresolvedColumnException(column,(foundColumns.get(0).getTable() == null) ? "String_Node_Str" : (foundColumns.get(0).getTable().getADQLName() + "String_Node_Str" + foundColumns.get(0).getADQLName()),(foundColumns.get(1).getTable() == null) ? "String_Node_Str" : (foundColumns.get(1).getTable().getADQLName() + "String_Node_Str" + foundColumns.get(1).getADQLName()));
 else     throw new UnresolvedTableException(column,(foundColumns.get(0).getTable() == null) ? "String_Node_Str" : foundColumns.get(0).getTable().getADQLName(),(foundColumns.get(1).getTable() == null) ? "String_Node_Str" : foundColumns.get(1).getTable().getADQLName());
  }
 else   throw new UnresolvedColumnException(column);
}

Fixed version (ground truth):
/** 
 * <p>Resolves the given column, that's to say searches for the corresponding   {@link DBColumn}.</p> <p>The third parameter is used only if this function is called inside a subquery. In this case, column is tried to be resolved with the first list (dbColumns). If no match is found, the resolution is tried with the father columns list (fatherColumns).</p>
 * @param column		The column to resolve.
 * @param dbColumns		List of all available {@link DBColumn}s.
 * @param fathersList	List of all columns available in the father query ; a list for each father-level.
 * @return 				The corresponding {@link DBColumn} if found. Otherwise an exception is thrown.
 * @throws ParseException	An {@link UnresolvedColumnException} if the given column can't be resolvedor an  {@link UnresolvedTableException} if its table reference can't be resolved.
 */
protected DBColumn resolveColumn(final ADQLColumn column,final SearchColumnList dbColumns,Stack<SearchColumnList> fathersList) throws ParseException {
  ArrayList<DBColumn> foundColumns=dbColumns.search(column);
  if (foundColumns.size() == 1)   return foundColumns.get(0);
 else   if (foundColumns.size() > 1) {
    if (column.getTableName() == null)     throw new UnresolvedColumnException(column,(foundColumns.get(0).getTable() == null) ? "String_Node_Str" : (foundColumns.get(0).getTable().getADQLName() + "String_Node_Str" + foundColumns.get(0).getADQLName()),(foundColumns.get(1).getTable() == null) ? "String_Node_Str" : (foundColumns.get(1).getTable().getADQLName() + "String_Node_Str" + foundColumns.get(1).getADQLName()));
 else     throw new UnresolvedTableException(column,(foundColumns.get(0).getTable() == null) ? "String_Node_Str" : foundColumns.get(0).getTable().getADQLName(),(foundColumns.get(1).getTable() == null) ? "String_Node_Str" : foundColumns.get(1).getTable().getADQLName());
  }
 else {
    if (fathersList == null || fathersList.isEmpty())     throw new UnresolvedColumnException(column);
 else {
      Stack<SearchColumnList> subStack=new Stack<SearchColumnList>();
      subStack.addAll(fathersList.subList(0,fathersList.size() - 1));
      return resolveColumn(column,fathersList.peek(),subStack);
    }
  }
}