void GoOverPathAndCreateLongSegs(Path path)
        {
            LongestNudgedSegment currentLongestSeg = null;

            var oppositeDir = CompassVector.OppositeDir(NudgingDirection);

            foreach (var edge in path.PathEdges)
            {
                var edgeDir = edge.Direction;
                if (edgeDir == NudgingDirection || edgeDir == oppositeDir)
                {
                    if (currentLongestSeg == null)
#if SHARPKIT //https://code.google.com/p/sharpkit/issues/detail?id=368
                    {
                        edge.LongestNudgedSegment = currentLongestSeg = new LongestNudgedSegment(LongestNudgedSegs.Count);
                        LongestNudgedSegs.Add(edge.LongestNudgedSegment);
                    }
#else
                    { LongestNudgedSegs.Add(
                          edge.LongestNudgedSegment =
                              currentLongestSeg     = new LongestNudgedSegment(LongestNudgedSegs.Count)); }
#endif
                    else
                    {
                        edge.LongestNudgedSegment = currentLongestSeg;
                    }

                    if (edge.IsFixed)
                    {
                        currentLongestSeg.IsFixed = true;
                    }
                }
        void ShowLongSegsWithIdealPositions(Directions dir)
        {
            // ReSharper restore UnusedMember.Local
            var debCurves = GetObstacleBoundaries(Obstacles, "black");
            int i         = 0;

            debCurves.AddRange(LongestNudgedSegs.Select(ls => DebugCurveOfLongSeg(ls, DebugCurve.Colors[i++ % DebugCurve.Colors.Length], dir)));

            DebugCurveCollection.WriteToFile(debCurves, "c:/tmp/longSegs");

            LayoutAlgorithmSettings.ShowDebugCurvesEnumeration(debCurves);
        }