private static boolean traverse(@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;
  }
private static boolean traverse(@NotNull List<? extends @NotNull OptComponent> components, @NotNull Predicate<@NotNull OptComponent> processor)