     
     private let path1: Path
     private let path2: Path
-    
-    private var nonCrossingComponents1: [PathComponent] = []
-    private var nonCrossingComponents2: [PathComponent] = []
     
     internal init(path1: Path, path2: Path, intersections: [PathIntersection]) {
         

                if useRelativeWinding {
                    isInside = windingCountImpliesContainment(windingCount, using: fillRule) && windingCountImpliesContainment(windingCount+1, using: fillRule)
                }

                v.intersectionInfo.isEntry = wasInside == false && isInside == true
                v.intersectionInfo.isExit = wasInside == true && isInside == false
                if v.intersectionInfo.isEntry || v.intersectionInfo.isExit {
                    hasCrossing = true
                }
            }
            if !hasCrossing {
                // TODO: fix logic here, we should do this after we are done and use .isCrossing
                nonCrossingComponents.append(self.path.subpaths[i])
            }
        }
    }

            var isOnFirstCurve = true
            var v = start
            repeat {
                let movingForwards = shouldMoveForwards(fromVertex: v, forOperation: operation, isOnFirstCurve: isOnFirstCurve)
                unvisitedCrossings = unvisitedCrossings.filter { $0 !== v }
                repeat {
