             
         } 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
            }
            

                
                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))
            }
        }
        
