static void CaptureInput(ImmutableDirectedGraph <string, string> map)
        {
            while (true)
            {
                Console.Clear();
                Console.WriteLine();

                Console.Write("Enter <Node> -- <Edge> --> <Node>: ");

                var input = Console.ReadLine();

                if (string.IsNullOrEmpty(input))
                {
                    Dump(map);
                    return;
                }

                var inputs = input.Split();

                if (inputs.Length != 3)
                {
                    CaptureInput(map);
                }

                map = map.AddEdge(inputs[0], inputs[1], inputs[2]);
            }
        }
        static void Dump(ImmutableDirectedGraph <string, string> map)
        {
            foreach (var path in map.GetAllEdgeTraversals("Troll Room"))
            {
                Console.WriteLine(string.Join(" ", from pair in path select pair.Key));
            }

            Console.Read();
        }