private void IdentifyRoutes(List<List<Node>> allRoutes, List<Node> currentList, Graph map)
        {
            foreach (var node in map.Nodes)
            {
                if (currentList.Count > 0)
                    if (!map.EdgeExists(currentList.Last(), node.Value))
                        continue;

                if ((currentList.Select(x => x.Key).Contains(node.Key)))
                    continue;

                if (currentList.Count < map.Nodes.Count - 1)
                {
                    if (!(currentList.Select(x => x.Key).Contains(node.Key)))
                    {
                        var newList = CloneList(currentList);
                        newList.Add(node.Value);
                        IdentifyRoutes(allRoutes, newList, map);
                    }
                }
                else
                {
                    var newList = CloneList(currentList);
                    newList.Add(node.Value);

                    if (!map.EdgeExists(currentList.Last(), currentList.First()))
                        continue;

                    newList.Add(currentList.First());
                    allRoutes.Add(newList);
                }
            }
        }