in reporter/src/com/intellij/rt/coverage/aggregate/Aggregator.java [109:147]
private static ProjectData copyProjectData(ProjectData projectData) {
final ProjectData projectDataCopy = new ProjectData();
for (ClassData classData : projectData.getClassesCollection()) {
final ClassData classCopy = projectDataCopy.getOrCreateClassData(classData.getName());
final LineData[] lines = (LineData[]) classData.getLines();
if (lines == null) continue;
final LineData[] linesCopy = new LineData[lines.length];
classCopy.setLines(linesCopy);
for (LineData lineData : lines) {
if (lineData == null) continue;
final LineData lineCopy = new LineData(lineData.getLineNumber(), lineData.getMethodSignature());
lineCopy.setId(lineData.getId());
linesCopy[lineCopy.getLineNumber()] = lineCopy;
final JumpData[] jumps = lineData.getJumps();
if (jumps != null) {
for (int i = 0; i < jumps.length; i++) {
final JumpData jump = jumps[i];
final JumpData jumpCopy = lineCopy.addJump(i);
jumpCopy.setId(jump.getId(true), true);
jumpCopy.setId(jump.getId(false), false);
}
}
final SwitchData[] switches = lineData.getSwitches();
if (switches != null) {
for (int i = 0; i < switches.length; i++) {
final SwitchData aSwitch = switches[i];
final SwitchData switchCopy = lineCopy.addSwitch(i, aSwitch.getKeys());
for (int key = -1; key < aSwitch.getKeys().length; key++) {
switchCopy.setId(aSwitch.getId(key), key);
}
}
}
lineCopy.fillArrays();
}
}
return projectDataCopy;
}