void (@NotNull List<? extends CompoundVFileEvent> events, int start, int end, @NotNull List<? super VFileEvent> outValidated, @NotNull List<? super Runnable> outApplyActions, @NotNull Set<? extends VFileEvent> toIgnore) { MultiMap<VirtualDirectoryImpl, VFileDeleteEvent> grouped = null; boolean hasValidEvents = false; for (int i = start; i < end; i++) { VFileEvent event = events.get(i).getFileEvent(); if (!(event instanceof VFileDeleteEvent de) || toIgnore.contains(event) || !event.isValid()) continue; VirtualDirectoryImpl parent = (VirtualDirectoryImpl)de.getFile().getParent(); if (grouped == null) { grouped = new MultiMap<>(end - start); } grouped.putValue(parent, de); outValidated.add(event); hasValidEvents = true; } if (hasValidEvents) { MultiMap<VirtualDirectoryImpl, VFileDeleteEvent> finalGrouped = grouped; outApplyActions.add((Runnable)() -> { clearIdCache(); applyDeletions(finalGrouped); incStructuralModificationCount(); }); } }