@Override public List<EvaluationStatistics> aggregate(List<EvaluationStatistics> stats){
  List<EvaluationStatistics> result;
  List<EvaluationStatistics> temp;
  EvaluationStatisticsComparator comp;
  int i;
  try {
    stats=new ArrayList<>(stats);
    result=new ArrayList<>();
    comp=new EvaluationStatisticsComparator(Utils.splitOptions(m_AggregationKeys));
    Collections.sort(stats,comp);
    i=0;
    temp=new ArrayList<>();
    while (i < stats.size()) {
      if ((temp.size() == 0) || (comp.compare(temp.get(temp.size() - 1),stats.get(i)) == 0)) {
        temp.add(stats.get(i));
        i++;
      }
 else {
        result.add(doAggregate(temp));
        temp.clear();
      }
    }
    if (temp.size() > 0)     result.add(doAggregate(temp));
  }
 catch (  Exception e) {
    result=stats;
    handleException("Failed to aggregate!",e);
  }
  return result;
}

@ Override public List < EvaluationStatistics > aggregate ( List < EvaluationStatistics > stats ) { List < EvaluationStatistics > result ; List < EvaluationStatistics > temp ; EvaluationStatisticsComparator comp ; int i ; try { stats = new ArrayList < > ( stats ) ; result = new ArrayList < > ( ) ; comp = new EvaluationStatisticsComparator ( Utils . splitOptions ( m_AggregationKeys ) ) ; Collections . sort ( stats , comp ) ; i = 0 ; temp = new ArrayList < > ( ) ; while ( i < stats . size ( ) ) { if ( ( temp . size ( ) == 0 ) || ( comp . compare ( temp . get ( temp . size ( ) - 1 ) , stats . get ( i ) ) == 0 ) ) { temp . add ( stats . get ( i ) ) ; i ++ ; } else { result . add ( doAggregate ( temp ) ) ; temp . clear ( ) ; } } if ( temp . size ( ) > 0 ) result . add ( doAggregate ( temp ) ) ; } catch ( Exception e ) { result = stats ; handleException ( "Failed to aggregate!" , e ) ; } return result ; }
aggregates the statistics and returns these .
