protected override Node GetNextNode(WorkingSet workingSet) { var edges = workingSet.CurrentWalk.Cast <Edge>().ToList(); if (_isExploding) { var nodes = workingSet.NodesNotInGraph.ToList(); var insideNodes = NodeFinder.GetInsideNodes(edges, nodes); var outsideNodes = workingSet.NodesNotInGraph.Except(insideNodes).ToList(); _isExploding = outsideNodes.Any(); if (_isExploding) { return(NodeFinder.FurthestNearestEdge(edges, outsideNodes).Node); } } return(GetNextInnerNode(workingSet)); }