void (@NotNull Collection<? extends N> children) { boolean paused = state.compareAndSet(State.PAUSED, State.STARTED); if (!paused && !state.compareAndSet(State.REQUESTED, State.STARTED)) throw new IllegalStateException(); stack.push(new ArrayDeque<>(children)); if (paused) processNextPath(); }