                         let lhs = Split(point_id: point_id, index: l_idx, count: left.count, split: l_split)
                         let rhs = Split(point_id: point_id, index: r_idx, count: right.count, split: r_split)
                         
-                        if left_split.values.contains(where: { $0.almostEqual(lhs) }) && right_split.values.contains(where: { $0.almostEqual(rhs) }) {
+                        if left_split.values.contains(where: { $0.almostEqual(lhs, reference: reference) }) && right_split.values.contains(where: { $0.almostEqual(rhs, reference: reference) }) {
                             continue
                         }
                         
-                        let _lhs = right_split.values.first(where: { $0.almostEqual(rhs) }).flatMap { left_split[$0.point_id] }
-                        let _rhs = left_split.values.first(where: { $0.almostEqual(lhs) }).flatMap { right_split[$0.point_id] }
+                        let _lhs = right_split.values.first(where: { $0.almostEqual(rhs, reference: reference) }).flatMap { left_split[$0.point_id] }
+                        let _rhs = left_split.values.first(where: { $0.almostEqual(lhs, reference: reference) }).flatMap { right_split[$0.point_id] }
                         
                         if let _lhs = _lhs {
                             looping_left.append((_lhs, lhs))

    
    private func _process(_ other: Shape.Component, reference: Double) -> InterscetionResult {
        
        let table = InterscetionTable(self, other)
        
        guard table.looping_left.isEmpty && table.looping_right.isEmpty else { return .regions(self._breakLoop(table.looping_left, reference: reference), other._breakLoop(table.looping_right, reference: reference)) }
        

    
    func splitPath(_ start: InterscetionTable.Split, _ end: InterscetionTable.Split) -> [ShapeRegion.Solid.Segment] {
        
        if start.almostEqual(end, reference: 0) {
            return []
        }
        if start.index == end.index {
