Program: 73620
Project: 73620
Buggy source:
/** 
 * @param aggrIndex
 * @throws OLAPException
 * @throws IOException
 * @throws DataException
 */
private boolean populateRelation(int aggrIndex,String aggrName) throws OLAPException, IOException, DataException {
  IAggregationResultSet rs=this.resultSet.getMeasureResult()[aggrIndex].getQueryResultSet();
  if (rs == null || rs.length() <= 0)   return false;
  EdgeCursor rowEdgeCursor=null, columnEdgeCursor=null;
  List columnDimList=null, rowDimList=null;
  if (this.view.getRowEdgeView() != null) {
    rowEdgeCursor=(EdgeCursor)((BirtEdgeView)this.view.getRowEdgeView()).getEdgeCursor();
    if (rowEdgeCursor != null)     rowDimList=rowEdgeCursor.getDimensionCursor();
  }
  if (this.view.getColumnEdgeView() != null) {
    columnEdgeCursor=(EdgeCursor)((BirtEdgeView)this.view.getColumnEdgeView()).getEdgeCursor();
    if (columnEdgeCursor != null)     columnDimList=columnEdgeCursor.getDimensionCursor();
  }
  CalculatedMember member=manager.getCalculatedMember(aggrName);
  List memberList=member.getAggrOnList();
  RelationShip relation=(RelationShip)this.relationMap.get(aggrName);
  List columnLevelList=relation.getLevelListOnColumn();
  List rowLevelList=relation.getLevelListOnRow();
  Map valueMap=new HashMap();
  for (int i=0; i < columnLevelList.size(); i++) {
    DimLevel level=(DimLevel)columnLevelList.get(i);
    DimensionCursor cursor=(DimensionCursor)columnDimList.get(i);
    Object value=cursor.getObject(level.getLevelName());
    valueMap.put(level,value);
  }
  for (int i=0; i < rowLevelList.size(); i++) {
    DimLevel level=(DimLevel)rowLevelList.get(i);
    DimensionCursor cursor=(DimensionCursor)rowDimList.get(i);
    Object value=cursor.getObject(level.getLevelName());
    valueMap.put(level,value);
  }
  if (columnLevelList.isEmpty() && rowLevelList.isEmpty())   return true;
  return findValueMatcher(rs,memberList,valueMap,aggrIndex);
}

Fixed version (ground truth):
/** 
 * @param aggrIndex
 * @throws OLAPException
 * @throws IOException
 * @throws DataException
 */
private boolean populateRelation(int aggrIndex,String aggrName) throws OLAPException, IOException, DataException {
  IAggregationResultSet rs=this.resultSet.getMeasureResult()[aggrIndex].getQueryResultSet();
  if (rs == null || rs.length() <= 0)   return false;
  EdgeCursor rowEdgeCursor=null, columnEdgeCursor=null, pageEdgeCursor=null;
  List columnDimList=null, rowDimList=null, pageDimList=null;
  if (this.view.getRowEdgeView() != null) {
    rowEdgeCursor=(EdgeCursor)((BirtEdgeView)this.view.getRowEdgeView()).getEdgeCursor();
    if (rowEdgeCursor != null)     rowDimList=rowEdgeCursor.getDimensionCursor();
  }
  if (this.view.getColumnEdgeView() != null) {
    columnEdgeCursor=(EdgeCursor)((BirtEdgeView)this.view.getColumnEdgeView()).getEdgeCursor();
    if (columnEdgeCursor != null)     columnDimList=columnEdgeCursor.getDimensionCursor();
  }
  if (this.view.getPageEdgeView() != null) {
    pageEdgeCursor=(EdgeCursor)((BirtEdgeView)this.view.getPageEdgeView()).getEdgeCursor();
    if (pageEdgeCursor != null)     pageDimList=pageEdgeCursor.getDimensionCursor();
  }
  CalculatedMember member=manager.getCalculatedMember(aggrName);
  List memberList=member.getAggrOnList();
  Relationship relation=(Relationship)this.relationMap.get(aggrName);
  List pageLevelList=relation.getLevelListOnPage();
  List columnLevelList=relation.getLevelListOnColumn();
  List rowLevelList=relation.getLevelListOnRow();
  Map valueMap=new HashMap();
  for (int index=0; index < pageLevelList.size(); index++) {
    DimLevel level=(DimLevel)pageLevelList.get(index);
    DimensionCursor cursor=(DimensionCursor)pageDimList.get(index);
    Object value=cursor.getObject(level.getLevelName());
    valueMap.put(level,value);
  }
  for (int i=0; i < columnLevelList.size(); i++) {
    DimLevel level=(DimLevel)columnLevelList.get(i);
    DimensionCursor cursor=(DimensionCursor)columnDimList.get(i);
    Object value=cursor.getObject(level.getLevelName());
    valueMap.put(level,value);
  }
  for (int i=0; i < rowLevelList.size(); i++) {
    DimLevel level=(DimLevel)rowLevelList.get(i);
    DimensionCursor cursor=(DimensionCursor)rowDimList.get(i);
    Object value=cursor.getObject(level.getLevelName());
    valueMap.put(level,value);
  }
  if (columnLevelList.isEmpty() && rowLevelList.isEmpty() && pageLevelList.isEmpty())   return true;
  return findValueMatcher(rs,memberList,valueMap,aggrIndex);
}