public List <Edge> FindIntersection(IEnumerable <Edge> edges)
        {
            intersected = null;
            var sweepLine = new SweepLine <IntersectionSweepEvent, IntersectionStatusItem>();
            List <LineSegment> segments = CreateSegments(edges);
            IEnumerable <E>    events   = CreateEvents(segments) as IEnumerable <E>;

            sweepLine.InitializeEvents(events);
            sweepLine.VerticalSweep(HandleEvent);
            return(intersected);
        }