private SimplePathSearchAlgorithm <TNode> InitialiseAndGetInstance(AbstractDiGraph <TNode> graph, TNode startNode)
        {
            var pathFinder = new SimplePathSearchAlgorithm <TNode>();

            pathFinder.RemoveCycles(graph, startNode);
            pathFinder.Initialise();
            return(pathFinder);
        }
        public List <AbstractGraphPath <TNode> > FindAllSimplePaths(AbstractDiGraph <TNode> graph, TNode source,
                                                                    TNode destination)
        {
            SimplePathSearchAlgorithm <TNode> pathFinder = InitialiseAndGetInstance(graph, source);

            pathFinder.FindSimplepath(source, destination);

            return(pathFinder._allpaths);
        }