optimized Ruling.find_intersections (O(log n))
must check for nil, for some reason