fun List<ShapeNodeIntersection>.merge(threshold: Double = 0.5): List<ShapeNodeIntersection>
fun List<Double>.merge(f: (Double, Double) -> Boolean): List<Double>