static Range intersectRanges(Range a, Range b) { float min = max(a.min, b.min); float max = min(a.max, b.max); ret min <= max ? new Range(min, max) : null; } static DoubleRange intersectRanges(DoubleRange a, DoubleRange b) { ret intersectDoubleRanges(a, b); }