public void Write(IReportWriter writer) { MetricGroup lastGroup = _heirarchy[_heirarchy.Length - 1]; List<MetricCounter> items = new List<MetricCounter>(lastGroup); items.Sort(new Comparer(_groupings)); _opened = new MetricCounter[_heirarchy.Length]; writer.StartGroup(_heirarchy[0]); foreach (MetricCounter counter in items) { if (counter.Excluded == false) WriteItem(writer, counter); } //close open for (int ix = _groupings.Length - 1; ix >= 0; ix--) { if (_opened[ix] != null) writer.StopItem(_heirarchy[ix], _opened[ix]); _opened[ix] = null; } writer.StopGroup(_heirarchy[0]); }