text: public static QualityStats average(QualityStats[] stats) {QualityStats avg = new QualityStats(0,0);if (stats.length==0) {return avg;}int m = 0; for (int i=0; i<stats.length; i++) {avg.searchTime += stats[i].searchTime;avg.docNamesExtractTime += stats[i].docNamesExtractTime;if (stats[i].maxGoodPoints>0) {m++;avg.numGoodPoints += stats[i].numGoodPoints;avg.numPoints += stats[i].numPoints;avg.pReleventSum += stats[i].getAvp();avg.recall += stats[i].recall;avg.mrr += stats[i].getMRR();avg.maxGoodPoints += stats[i].maxGoodPoints;for (int j=1; j<avg.pAt.length; j++) {avg.pAt[j] += stats[i].getPrecisionAt(j);}}}assert m>0 : "Fishy: no \"good\" queries!";avg.searchTime /= stats.length;avg.docNamesExtractTime /= stats.length;avg.numGoodPoints /= m;avg.numPoints /= m;avg.recall /= m;avg.mrr /= m;avg.maxGoodPoints /= m;for (int j=1; j<avg.pAt.length; j++) {avg.pAt[j] /= m;}avg.pReleventSum /= m;                 avg.pReleventSum *= avg.maxGoodPoints; return avg;}