boolean (@NotNull List<? extends @NotNull OptComponent> components, @NotNull Predicate<@NotNull OptComponent> processor) { for (OptComponent component : components) { if (!processor.test(component) || !traverse(component.children(), processor)) return false; } return true; }