code: private boolean checkAllPathsWithoutBackEdges(DiGraphNode<N, E> a,
        DiGraphNode<N, E> b) {
      if (nodePredicate.apply(a.getValue()) &&
          (inclusive || (a != start && a != end))) {
        return true;
      }
      if (a == b) {
        return false;
      }
      for (DiGraphEdge<N, E> e : a.getOutEdges()) {
        // Once we visited that edge once, we no longer need to
        // re-visit it again.
        if (e.getAnnotation() == VISITED_EDGE) {
          continue;
        }
        e.setAnnotation(VISITED_EDGE);
  
        if (ignoreEdge(e)) {
          continue;
        }
        if (e.getAnnotation() == BACK_EDGE) {
          continue;
        }
  
        DiGraphNode<N, E> next = e.getDestination();
        if (!checkAllPathsWithoutBackEdges(next, b)) {
          return false;
        }
      }
      return true;
    }
docs: Verify that all non-looping paths from {@code a} to {@code b} pass
  through at least one node where {@code nodePredicate} is true.