             
             guard r_end == l_end else { continue }
             
-            do {
-                
-                let segments = left.split_path(l_start, l_end) + right.split_path(r_start, r_end).map { $0.reversed() }.reversed()
-                
-                if ShapeRegion.Solid(segments: segments, reference: reference) == nil {
-                    
-                    if let _start = left_segments.first(where: { $0.value == l_start })?.key {
-                        left_segments[_start] = left_segments[l_start]
-                    }
-                    if let _start = right_segments.first(where: { $0.value == r_start })?.key {
-                        right_segments[_start] = right_segments[r_start]
-                    }
-                    
-                    left_segments[l_start] = nil
-                    right_segments[r_start] = nil
-                    
-                    left_overlap.insert(Segment(from: l_start.point_id, to: l_end.point_id))
-                    right_overlap.insert(Segment(from: r_start.point_id, to: r_end.point_id))
-                    
-                    continue
-                }
-            }
-            
-            if overlap[InterscetionTable.Overlap(left: l_start.index, right: r_start.index)] == true {
-                
-                if let _start = left_segments.first(where: { $0.value == l_start })?.key {
+            let segments = left.split_path(l_start, l_end) + right.split_path(r_start, r_end).map { $0.reversed() }.reversed()
+            
+            if ShapeRegion.Solid(segments: segments, reference: reference) == nil ||
+                overlap[InterscetionTable.Overlap(left: l_start.index, right: r_start.index)] == true {
+                
+                if let _start = left_segments.first(where: { $0.value == l_start })?.key, _start != left_segments[l_start] {
                     left_segments[_start] = left_segments[l_start]
                 }
-                if let _start = right_segments.first(where: { $0.value == r_start })?.key {
+                if let _start = right_segments.first(where: { $0.value == r_start })?.key, _start != right_segments[r_start] {
                     right_segments[_start] = right_segments[r_start]
                 }
                 

                
                left_overlap.insert(Segment(from: l_start.point_id, to: l_end.point_id))
                right_overlap.insert(Segment(from: r_start.point_id, to: r_end.point_id))
                
                continue
            }
        }
        

                return .subset
            }
            
            let is_inner_right = table.right_segments.contains { !$0.almostEqual($1) && self.winding(other.mid_point($0, table._right_segments[$0]!)) != 0 }
            if is_inner_right || (table.right_segments.isEmpty && self._contains(other)) {
                return .superset
            }
            
