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].MRR;avg.maxGoodPoints += stats[i].maxGoodPoints;for (int j = 1; j < avg.pAt.Length; j++){avg.pAt[j] += stats[i].GetPrecisionAt(j);}}}Debug.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;}