void (@NotNull CompositePackagingElement<?> element, @NotNull Predicate<? super PackagingElement<?>> condition) { List<PackagingElement<?>> toRemove = new ArrayList<>(); for (PackagingElement<?> child : element.getChildren()) { if (child instanceof CompositePackagingElement<?> compositeChild) { removeChildrenRecursively(compositeChild, condition); if (compositeChild.getChildren().isEmpty()) { toRemove.add(child); } } else if (condition.test(child)) { toRemove.add(child); } } element.removeChildren(toRemove); }