public static Either <Null, Point2D, Segment2D> IntersectWithLine(this Segment2D segment, Line2D line) =>
 segment.IntersectWithLine(line.AsBoundaryLine());
 public static bool IntersectsSegment(this Line2D line, Segment2D segment) =>
 !segment.IntersectWithLine(line).Is <Null>();
 public static Either <Null, Point2D, Segment2D> IntersectLineWithSegment(this Line2D line, Segment2D segment) =>
 segment.IntersectWithLine(line);