public IEnumerable <IntArrow <double> > EnumerateCoverage(IntInterval bounds) { var before = arrow.Before(bounds); if (!before.IsEmpty) { yield return(before); } var intersection = arrow * bounds; if (!intersection.IsEmpty) { yield return(intersection); } var after = arrow.After(bounds); if (!after.IsEmpty) { yield return(after); } }