private void ConnectFreePointToLateralEdge(FreePoint freePoint, Directions lateralDir) {
            // Turn on pivot vertex to either side to find the next edge to connect to.  If the freepoint is
            // overlapped (inside an obstacle), just find the closest ScanSegment outside the obstacle and 
            // start extending from there; otherwise, we can have the FreePoint calculate its max visibility.
            var end = freePoint.IsOverlapped ? this.InBoundsGraphBoxIntersect(freePoint.Point, lateralDir)
                                             : freePoint.MaxVisibilityInDirectionForNonOverlappedFreePoint(lateralDir, this.TransUtil);
            var lateralEdge = this.FindorCreateNearestPerpEdge(end, freePoint.Point, lateralDir, freePoint.InitialWeight);

            // There may be no VisibilityEdge between the current point and any adjoining obstacle in that direction.
            if (null != lateralEdge) {
                freePoint.AddEdgeToAdjacentEdge(TransUtil, lateralEdge, lateralDir, this.portSpliceLimitRectangle);
            }
        }