this.groupCalculationUtil.getResultSetCache( ) ) - 1;
this.groupCalculationUtil.getResultSetCache( ).getCount( ) ) - 1;
	private GroupBoundaryInfo getGroupBoundaryInfo( int groupLevel,			int groupIndex ) throws DataException	{		// j is the group index, is 0-based		int startIdx = GroupUtil.getGroupFirstRowIndex( groupLevel,				groupIndex,				groups,				this.groupCalculationUtil.getResultSetCache( ) );		int endIdx = this.groupCalculationUtil.getResultSetCache( ).getCount( ) - 1;		if ( groupIndex < groups[groupLevel - 1].size( ) - 1 )		{			endIdx = GroupUtil.getGroupFirstRowIndex( groupLevel,					groupIndex + 1,					groups,					this.groupCalculationUtil.getResultSetCache( ) ) - 1;		}		assert startIdx >= 0;		assert endIdx >= 0;		GroupBoundaryInfo result = new GroupBoundaryInfo( startIdx, endIdx );		return result;	}