internal void AssertEdgesPresentAndPassable(List<Point> path) {
            var vs = VisGraph.FindVertex(path[0]);
            Debug.Assert(vs != null);
            var vt = VisGraph.FindVertex(path[path.Count - 2]);
            Debug.Assert(vt != null);

            vs.IsShortestPathTerminal = vt.IsShortestPathTerminal = true;

            var router = new SingleSourceSingleTargetShortestPathOnVisibilityGraph(_visGraph, vs, vt) {
                LengthMultiplier = 0.8,
                LengthMultiplierForAStar = 0.0
            };

            List<VisibilityEdge> pathEdges = new List<VisibilityEdge>();
            for (int i = 0; i < path.Count - 1; i++)
            {
                var edge = FindEdge(path[i], path[i + 1]);
                Debug.Assert(edge != null);
                pathEdges.Add(edge);
            }

            router.AssertEdgesPassable(pathEdges);

            vs.IsShortestPathTerminal = vt.IsShortestPathTerminal = false;
        }