void (@NotNull List<? extends VFileEvent> events) { StreamEx.of(events) // group several VFileDeleteEvents together, several VFileMoveEvents together, place all other events into one-element lists .groupRuns((e1, e2) -> e1 instanceof VFileDeleteEvent && e2 instanceof VFileDeleteEvent || e1 instanceof VFileMoveEvent && e2 instanceof VFileMoveEvent) .forEach(this::fireForGrouped); }