boolean (@NotNull TreePath path, @NotNull N node) { current = path; Collection<N> children = getChildren(node); if (children == null) return !state.compareAndSet(State.REQUESTED, State.PAUSED); update(State.REQUESTED, State.STARTED); stack.push(new ArrayDeque<>(children)); return true; }