private static bool CutCurveHullBuffer([NotNull] SegmentProxy segment, [NotNull] SegmentProxy hull, bool is3D, double r2, [NotNull] out IList <double[]> limits, out NearSegment hullStartNear, out NearSegment hullEndNear, out bool coincident) { coincident = GetCoincident(segment, hull, is3D, out hullStartNear, out hullEndNear); if (r2 > 0) { IPolygon buffer = hull.CreateBuffer(Math.Sqrt(r2)); limits = SegmentUtils.GetLimits(segment, buffer); } else if (coincident) { limits = new List <double[]>(); limits.Add(new double[] { 0, 1 }); } else { limits = new List <double[]>(); } return(limits.Count > 0); }