             
         }
         if _data2.count < 2 {
-            if left.contains(right) {
+            if left.contains(right, hint: Set(0..<right.count).subtracting(overlap_r_index)) {
                 overlap = .superset
-            } else if right.contains(left) {
+            } else if right.contains(left, hint: Set(0..<left.count).subtracting(overlap_l_index)) {
                 overlap = .subset
             }
             return

            return false
        }
        
        fatalError("Unimplement.")
    }
}



extension Shape.Component {
    
    fileprivate func contains(_ loop: Shape.Component, hint: Set<Int>) -> Bool {
        
        if !self.bigBound.contains(loop.boundary) {
            return false
