internal SingleSourceMultipleTargetsShortestPathOnVisibilityGraph(VisibilityVertex sourceVisVertex,
                                                                         IEnumerable<VisibilityVertex> targetVisVertices, VisibilityGraph visibilityGraph) {
            _visGraph = visibilityGraph;
            _visGraph.ClearPrevEdgesTable();
            foreach (var v in visibilityGraph.Vertices())
                v.Distance = Double.PositiveInfinity;

            source = sourceVisVertex;
            targets = new Set<VisibilityVertex>(targetVisVertices);
            source.Distance = 0;
        }
        static void InitQueueOfSources(Queue<VisibilityVertex> queue, IDictionary<VisibilityVertex, int> dictionary, VisibilityGraph graph) {
            foreach (var v in graph.Vertices()) {
                int inDegree = v.InEdges.Count;
                dictionary[v] = inDegree;
                if (inDegree == 0)
                    queue.Enqueue(v);
            }
            Debug.Assert(queue.Count > 0);

        }
        internal void DevTrace_VerifyAllVertices(VisibilityGraph vg) {
#if DEVTRACE
            if (transGraphVerify.IsLevel(4)) {
                foreach (var vertex in vg.Vertices()) {
                    DevTrace_VerifyVertex(vertex);
                }
            }
#endif // DEVTRACE
        }