             
         } else if check1 {
             
-            let is_outer_right = table.right_segments.lazy.compactMap { !$0.almostEqual($1) ? self.winding(other.mid_point($0, table._right_segments[$0]!)) == 0 : nil }.first
-            if is_outer_right.map({ $0 == false }) ?? self._contains(other) {
+            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
             }
             

                return .subset
            }
            
            let is_outer_right = table.right_segments.lazy.compactMap { !$0.almostEqual($1) ? self.winding(other.mid_point($0, table._right_segments[$0]!)) == 0 : nil }.first
            if is_outer_right.map({ $0 == false }) ?? self._contains(other) {
                return .superset
            }
            

            
            guard r_end == l_end else { continue }
            
            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, _start != right_segments[r_start] {
                    right_segments[_start] = right_segments[r_start]
                }
                
