code: private List<SimplePath> runDepthFirstScan(final Kam kam,
              final KamNode source) {
          final SetStack<KamEdge> edgeStack = new SetStack<KamEdge>();
          final SetStack<KamNode> nodeStack = new SetStack<KamNode>();
          final List<SimplePath> pathResults = new ArrayList<SimplePath>();
  
          // push on start node
          nodeStack.push(source);
  
          int initialDepth = 0;
          runDepthFirstScan(kam, source, source, initialDepth, nodeStack,
                  edgeStack,
                  pathResults);
  
          return pathResults;
      }
docs: Initializes and executes a depth-first scan from {@link KamNode} source
  given a max search depth ({@link BasicPathFinder#maxSearchDepth}).
  
  @param kam {@link Kam}, the kam to traverse
  @param source {@link KamNode}, the source kam node
  @return the resulting paths from this depth-first scan