in java6-utils/src/com/intellij/rt/coverage/report/XMLCoverageReport.java [320:362]
private void writeFile(String fileName, List<LineData> lines, Map<LineData, Counter> lineCounters) throws XMLStreamException {
myOut.writeStartElement(SOURCEFILE_TAG);
myOut.writeAttribute(NAME_TAG, fileName);
newLine();
final TIntObjectHashMap<Counter> groupedLines = new TIntObjectHashMap<Counter>();
for (LineData lineData : lines) {
if (lineData == null) continue;
final int lineNumber = lineData.getLineNumber();
Counter lineCounter = groupedLines.get(lineNumber);
if (lineCounter == null) {
lineCounter = new Counter();
groupedLines.put(lineNumber, lineCounter);
}
final Counter counter = lineCounters.get(lineData);
if (counter != null) {
lineCounter.add(counter);
}
}
final List<LineCounter> groupedLinesList = new ArrayList<LineCounter>();
groupedLines.forEachEntry(new TIntObjectProcedure<Counter>() {
public boolean execute(int lineNumber, Counter counter) {
groupedLinesList.add(new LineCounter(lineNumber, counter));
return true;
}
});
Collections.sort(groupedLinesList, new Comparator<LineCounter>() {
public int compare(LineCounter o1, LineCounter o2) {
return o1.line - o2.line;
}
});
final Counter counter = new Counter();
for (LineCounter lineCounter : groupedLinesList) {
writeLine(lineCounter.counter, lineCounter.line);
counter.add(lineCounter.counter);
}
writeCounter(counter, INSTRUCTION_MASK | LINE_MASK | BRANCH_MASK);
myOut.writeEndElement();
newLine();
}