private static ArrayList getModifications()

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;
  }