in src/main/java/com/intellij/rt/debugger/agent/CollectionBreakpointInstrumentor.java [235:265]
private static ArrayList<Modification> getModifications(Multiset oldElements, Object newCollection) {
Multiset newElements = Multiset.toMultiset(newCollection);
ArrayList<Modification> modifications = new ArrayList<>();
for (Map.Entry<Object, Integer> entry : newElements.entrySet()) {
Integer newNumber = entry.getValue();
Integer oldNumber = oldElements.get(entry.getKey());
Object element = entry.getKey();
if (element instanceof Wrapper) {
element = ((Wrapper)element).getValue();
}
if (!newNumber.equals(oldNumber)) {
boolean isAddition = oldNumber == null || newNumber > oldNumber;
modifications.add(new Modification(element, isAddition));
}
}
for (Map.Entry<Object, Integer> entry : oldElements.entrySet()) {
Integer newNumber = newElements.get(entry.getKey());
Object element = entry.getKey();
if (element instanceof Wrapper) {
element = ((Wrapper)element).getValue();
}
if (newNumber == null) {
modifications.add(new Modification(element, false));
}
}
return modifications;
}